也许我做错了,但这是我的问题:
@restaurant = current_user.restaurants.build(params[:restaurant])
这将构建一个新的餐厅对象,其中用户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,这将是不好的!!我认为外键被排除在这个大规模分配安全之外,如果您通过association
.build
或.create
方法创建一个新对象,外键就会被强制执行。有什么建议吗?我不想回到
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user
因为这样做违背了
.build
最佳答案
您使用的是Rails3.2.0.rc1吗?这是一个已知的错误github.com/rails/rails/issues/4051(已解决)
关于ruby-on-rails - Rails协会无法批量分配外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8616796/