Rails关联不能批量分配外键。

3
也许我做错了什么,但这是我的问题:

@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

我想要的是通过 .build 定义user_id,但同时我不希望使用attr_accessible :user_id,因为这样有可能会将该记录的 user_id 设置为其他用户的id,这是不好的!我原以为外键被排除在Mass Assignment Security之外,并且如果你通过关联的 .build.create 方法创建一个新对象时会强制执行。有什么建议吗?我不想退回到...
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user

因为这样做有点违背使用.build的初衷。

你确定你的参数中没有 id 吗? - apneadiving
1
你正在使用Rails 3.2.0.rc1吗?那是一个已知的bug https://github.com/rails/rails/issues/4051(已解决) - Damien
@Delba 谢谢!是的,我是。应该先检查一下 Rails 的问题。对不起,大家。 - patrickdet
@patrickdet 啊啊!我有点羞愧,但是...我可以把这个放到答案里,这样你就可以接受它了,哈哈? - Damien
@patrickdet 哇!简单的分数!谢谢。 - Damien
显示剩余3条评论
1个回答

3

您正在使用 Rails 3.2.0.rc1 吗?这是一个已知的 bug,详情请参考 github.com/rails/rails/issues/4051(已解决)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接