也许我做错了但这是我的问题:
@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
定义.build
,但同时我不想要attr_accessible :user_id
,因为有人可以设置此用户的id_id记录到其他用户的ID,这将是不好的!!
我认为外键已从此批量分配安全性中排除,并且如果您通过关联.build
或.create
方法创建新对象,则会强制执行。
有什么建议吗?我不想回到
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user
因为这种做法违背了.build
答案 0 :(得分:3)
您使用的是Rails 3.2.0.rc1吗?这是一个知道错误github.com/rails/rails/issues/4051(已解决)