我在我的应用程序中有接受评论的产品,我希望用户能够对产品(创建,更新......)进行操作,并且每个操作都应该有评论。
因此,评论是产品的嵌套属性。
accepts_nested_attributes_for :comments, reject_if: proc { |comment| comment['text'].blank? }
我的问题是我希望评论知道哪个用户创建了它们,所以我在模型中添加了一个before_validation钩子,将当前用户分配给评论:
before_validation :assign_current_user
...
private
def assign_current_user
user = Thread.current[:current_user]
end
但这不起作用,因为Thread.current[:current_user]
会返回nil
。
我知道在模型中我不应该引用current_user
,虽然我不知道如何将当前用户传递给nested_attribute,因为我不希望user_id属于attr_accessible
元素(我不希望用户与谁创建评论进行调整)。
所以我不确定这样做的正确方法是什么。
谢谢,