私は現在 Rails 3 In Action を読んでいます。この本は、プロジェクトを作成できるアプリを作成し、プロジェクトごとにチケットを作成できます。3 つのモデルを作成します。
計画:
class Project < ActiveRecord::Base
attr_accessible :name
validates :name, presence: true
has_many :tickets, :dependent => :destroy
end
チケット:
class Ticket < ActiveRecord::Base
belongs_to :project
belongs_to :user
attr_accessible :description, :title
validates :title, presence: true
validates :description, presence: true, :length => { :minimum => 10 }
end
およびユーザー:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
ticket_controller 内の create アクションに次の行を追加すると、次のようになります。
@ticket = @project.tickets.build(params[:ticket].merge!(:user => current_user))
このエラーが発生しますCan't mass-assign protected attributes: user
。今、私は何のマージがよくわかりません! やっている理由と、:userが渡されている理由、またはエラーが発生している理由。通常、attr_accessible: メソッドに mass-assignment 属性を含める必要があることはわかっています。しかし、今回は属性がクラスなので、これを処理する方法がわかりません。
助けて、マイク