我目前正在我的一个模型上使用嵌套模型质量分配。它是一种享受,但是,我希望能够确保创建的任何嵌套模型“属于”同一用户。
我设法通过使用alias方法链接来实现这个:
def contact_attributes_with_user_id=(attributes)
self.contact_attributes_without_user_id = attributes.merge( "user_id" => user_id )
end
alias_method_chain :contact_attributes=, :user_id
现在这样可以正常工作,但这意味着我无法再对联系人的user_id进行属性保护 - 这可能会在将来轻易将某人赶出去。
有人能提出更好的方法吗?
答案 0 :(得分:0)
如果您向before_save
模型添加Contact
挂钩,如下所示:
belongs_to :parent
validates_presence_of :parent_id
before_save :assign_user_id
private
def assign_user_id
self.user_id = parent.user_id
end
这样,您的联系人'user_ids将遵循父模型,您根本不必担心分配(您可以摆脱alias_method_chain
)。