我是Rails的新手,我在想一个很好的解决方案,在保存它们之前在我的模型中设置受保护的属性,但我找不到合适的方法。
假设我有属于公司的用户,这些公司可以有很多客户。在保存新客户端之前,我想设置其company_id,从存储在会话中的current_user的company_id获取它(我正在使用Devise)。
我正在考虑使用模型回调,如before_create或其他任何东西,但我意识到我的Rspec模型测试可能会失败,因为在运行它们时将没有current_user ...
是否有设置此参数的最佳做法必须自动设置?
提前致谢!
答案 0 :(得分:2)
只需将其设置在控制器中即可。
def create
@new_user = User.new(params[:user])
@new_user.company = current_user.company # <-- here
if @new_user.save
# ...
else
# ...
end
end
如果在模型回调中设置它,则存在一些缺点。