0

@edit_iduser_controllerupdateアクションでインスタンス変数 ( ) を作成しました。

def update
  ......
  @edit_id = 1
  ......
end

user_model に Active Record Callbacks があります

has_many :details
after_update :create_user_details
  ......
  private
  def create_user_details
     detail = user.details.build
     detail.edit_id = @edit_id
     #(this @edit_id is the user_controller update action 
     #created instance variable, but **@edit_id is nil**)
     detail.save
  end

コールバック アクションでインスタンス変数を使用する方法

4

1 に答える 1

2

モデルでコントローラーのインスタンス変数を使用することはできません。
どちらも異なるオブジェクトの異なるインスタンスであるため、インスタンス変数を共有しません。

次のようにインスタンスに設定して、モデルにこの値を提供する必要があります。

model Foo
  attr_accessor :edit_id

  private
  def create_user_details
   detail = user.details.build
   detail.edit_id = edit_id
   detail.save
  end
end

次に、コントローラーで、モデルに値を指定して保存します。

def update
  @foo = Foo.new
  @foo.edit_id = 1
  # Whatever other business logic you want to do
end
于 2012-06-29T07:02:00.717 に答える