也许我做错了,但这是我的问题:
@restaurant = current_user.restaurants.build(params[:restaurant])
这将构建一个新的餐厅对象,其中 user_id 设置为current_user.id
. 这仅在您attr_accessible :user_id
在餐厅模型中设置时有效。如果没有,你会得到一个
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes:
user_id
我想要的是有user_id
定义的 via,.build
但同时我不想要,attr_accessible :user_id
因为这样就可能有人将此记录的 user_id 设置为其他用户的 id,这会很糟糕!
我认为外键已被排除在此批量分配安全性之外,并且如果您通过关联.build
或.create
方法创建新对象,则会强制执行。
有什么建议么?我不想回去
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user
因为那样有悖于目的.build