在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,但我可能会遗漏一些东西。有什么想法吗?
答案 0 :(得分:1)
你应该在会议的背景下创建评论,不是吗?无论哪种方式,您都应该在控制器中处理此问题,因为您无法访问模型中的@user。
@comment = Meeting.find(id).comments.create(owner_id: @user, ... )
但如果你坚持自己的方式,那就这样做:
@comment = @user.meetings.first.comments.create(owner_id: @user.id)