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

我想要的是有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

4

1 回答 1

3

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

于 2011-12-23T14:14:08.800 回答