2

Rails 3.2 では、before_add コールバック内でオブジェクトの関連付けをトラバースする方法を探していました。

したがって、基本的に私のユースケースは次のとおりです。

class User < ActiveRecord::Base
  has_and_belongs_to_many :meetings
end

class Meeting < ActiveRecord::Base
  has_and_belongs_to_many :users
  has_many :comments, :before_add => :set_owner_id
end

class Comment < ActiveRecord::Base
  belongs_to :meeting
end

def set_owner_id(child)
  child.owner_id = <<<THE USER ID for @user >>>
end

そして、ユーザーのコンテキスト内でコメントを作成しています:

@user.meetings.first.comments.create

before_add コールバック内から関連付けをトラバースして @user の ID を見つけるにはどうすればよいですか? これをモデルレベルで設定したい。私はproxy_associationを見てきましたが、何かが足りないかもしれません. 何か案は?

4

1 に答える 1

1

おそらく、会議のコンテキストでコメントを作成する必要がありますよね? いずれにせよ、モデルでは @user にアクセスできないため、コントローラーでこれを処理する必要があります。

@comment = Meeting.find(id).comments.create(owner_id: @user, ... )

しかし、自分のやり方に固執する場合は、次のようにします。

@comment = @user.meetings.first.comments.create(owner_id: @user.id)
于 2013-03-26T15:42:15.120 に答える