Head First Rails 第1版を使用した場合における注意点

はじめに

Head First Rails 第1版を使用した場合における注意点 Ruby 2.0.0 rails4でやった場合

p7

rails tickets を

以下のように読み替える rails new tickets

P8

cd tickets
ruby script/server 

を次のように読み替える

cd tickets
rails server (もしくは省略して rails sでもよい)

P12

ruby script/generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal email_address:string

は以下のように読み替える

rails generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal email_address:string

rails generate は rails g 省略出来る

P27

編集するHTMLファイルについて new と Editは_form.html.erb を使っている。のでそれを書き換えればOK

P36、P35

Railsが生成したコードが異なる。def self.upとself.downを使ったコードではなく、以下のようなコードになった。

class AddPhoneToTickets < ActiveRecord::Migration
  def change
    add_column :tickets, :phone, :string
  end
end

P36,37

Rails4からのStrong Parameters という新機能で、入力されたデータはホワイトリストによって追加・変更する項目がデフォルトで制限されるようになりました。そのおかげ、scaffoldした項目は自動的にホワイトリストに追加されるが、追加したphoneはホワイトリストに登録されてないため値を入れても作成・変更出来ない状況が発生します。
参考URL:≫ Rails4 の Strong Parameters でリクエストパラメータを検証する TECHSCORE BLOG

なので、ホワイトリストにphoneを以下のようにして追加する。

vi app/controllers/tickets_controller.rb
70    # Never trust parameters from the scary internet, only allow the white list through.
71    def ticket_params
72      params.require(:ticket).permit(:name, :seat_id_seq, :address, :price_paid, :email_address)
73    end
これを以下のように書き換える。
70    # Never trust parameters from the scary internet, only allow the white list through.
71    def ticket_params
72      params.require(:ticket).permit(:name, :seat_id_seq, :address, :price_paid, :email_address, :phone)
73    end