Rails关联不能批量分配外键

时间:2011-12-23 13:45:18

标签: ruby-on-rails ruby associations activemodel mass-assignment

也许我做错了但这是我的问题:

@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

的目的

1 个答案:

答案 0 :(得分:3)

您使用的是Rails 3.2.0.rc1吗?这是一个知道错误github.com/rails/rails/issues/4051(已解决)