Posted on

Rails4のStrong Parameters

Rails4のStrong Parametersに関するメモ。新しくrailsのプロジェクトを作成し、rails generate 〜 すると自動生成されたController内がRails3系の時と変わっていた。生成後のArticlesControllerの一部。コメント等は削除しています。このArticlesControllerはブログのタイトル(title)と記事(content)だけを管理するシンプルなもの。

[cc lang=”rails” height=”580″]
class ArticlesController < ApplicationController before_action :set_article, only: [:show, :edit, :update, :destroy] def index @articles = Article.all end (省略) def create @article = Article.new(article_params) if @article.save redirect_to @article, notice: 'Article was successfully created.' else render action: 'new' end end (省略) private # Use callbacks to share common setup or constraints between actions. def set_article @article = Article.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def article_params params.require(:article).permit(:title, :content) end end [/cc] 以前は、article_params なんてprivate method はなかった気がする。create、update action 時、paramsを受け取って対象となるカラムの操作を行っていた。ただ、更新して良いもの、更新させたくないものがあるので、それらの機能は model に attr_accessibleやattr_protected を設定していた。Article modelは以下のように書いていた。 [cc lang="rails" height="50"] class Article < ActiveRecord::Base attr_accessible :title, :content end [/cc] 去年話題にもなりましたが、Mass Assignment の脆弱性対策としての一環なんでしょうけれど。controller側ではなくmodel側でなんとかできたら良いのに..と思います。(controllerをすっきりさせたいという意味で、、ですが、機能的にはcontrollerの役目なのかな..)

Posted on

minneリリースされました

あっと言う間に1月も終わろうとしています。今月は大きなリリースがいくつかありました。1つは僕も携わったminneというサービスです。手作りの作品を公開し、販売(こちらは準備中)できるレンタルボックスです。ネットでものが買えるなんて今では当たり前のように使っていますが、手作りのものって個人でサイト作って、頑張ってECサイトやれる人ってごく一握りの人だけなんです。ものを作ること、ものを公開すること、そしてものを売ること。全て一人でやることってすごく難しい。ここで言う難しいは時間・技術力・それにかかるコスト等..。できるだけ負担を楽にそして楽しくできればうれしいし、その仕組みを提供する側として参加できたことはうれしいことです。
そして奥さんにも使ってもらっているのですが、販売機能が出来ていないにも関わらず早速注文のメールが来ているようです。これまたうれしいことですね。
最後に、リリース前に使って頂いた作家の皆さん、フライヤーを置かせていただいた雑貨屋、ショップオーナーの皆さん有難うございました。今後ともよろしくお願いいたします。

Posted on

Rails用プラグインtypus

備忘録.Railsにはこんなプラグインがあるんですね。

typus/typus – GitHub

Ruby on Rails Admin Panel (Engine) to allow trusted users edit structured content.
管理者ページを構築してくれるらしいです。

[cc lang=”bash”]
$ rails new admin-panel
[/cc]
railsアプリケーションを作成

[cc lang=”bash”]
$ cd admin-panel
$ rails generate model user username:string account:string password:string
$ rails generate model task title:string memo:text completed:boolean user_id:integer
[/cc]
適当にテスト用テーブルを作成

[cc lang=”bash”]
$ sudo gem install typus
$ gem list typus

*** LOCAL GEMS ***

typus (3.0.12)
[/cc]
typusをインストールし、インストールされたことを確認します。

[cc lang=”bash”]
$ vim Gemfile
gem ‘typus’
[/cc]
gemfileにtypusを追加

[cc lang=”bash”]
$ bundle install
[/cc]
バンドルインストール

[cc lang=”bash”]
$ rails generate typus
[/cc]
typus をジェネレート

[cc lang=”bash”]
$ rails s
[/cc]
アプリケーション開始

scaffoldで作成したテーブルを一元化したようなイメージ。それっぽい管理者ページができます。