12

フォームに入力された別のフィールドに基づいて依存オブジェクトを作成する必要があるモデルのコールバックがあります。ただしparams、コールバック メソッドでは未定義です。それにアクセスする別の方法はありますか?フォームからコールバック メソッドのパラメータを渡す適切な方法は何ですか?

class User < ActiveRecord::Base
  attr_accessible :name
  has_many :enrollments

  after_create :create_enrollment_log
  private
  def create_enrollment_log
    enrollments.create!(status: 'signed up', started: params[:sign_up_date])
  end
end
4

2 に答える 2

7

params はモデルでアクセスできません。パラメーターとして渡しても、悪い習慣と見なされ、危険な場合もあります。

できることは、仮想属性を作成してモデルで使用することです。

class User < ActiveRecord::Base
 attr_accessible :name, :sign_up_date
 has_many :enrollments

 after_create :create_enrollment_log
 private
 def create_enrollment_log
   enrollments.create!(status: 'signed up', started: sign_up_date)
 end
end

sign_up_date は仮想属性です

于 2012-11-28T19:42:25.307 に答える