Ruby on rails Rails关联可以';t指定外键
也许我做错了,但我的问题是:Ruby on rails Rails关联可以';t指定外键,ruby-on-rails,ruby,associations,activemodel,mass-assignment,Ruby On Rails,Ruby,Associations,Activemodel,Mass Assignment,也许我做错了,但我的问题是: @restaurant = current_user.restaurants.build(params[:restaurant]) 这将构建一个新的餐厅对象,其中用户id设置为当前用户.id。仅当您在餐厅模型中设置了attr\u accessible:user\u id时,此选项才有效。如果不是的话,你会得到一个 ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attr
@restaurant = current_user.restaurants.build(params[:restaurant])
这将构建一个新的餐厅对象,其中用户id设置为当前用户.id。仅当您在餐厅模型中设置了attr\u accessible:user\u id
时,此选项才有效。如果不是的话,你会得到一个
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes:
user_id
我想要的是通过.build
定义user\u id
,但同时我不想让attr\u可访问:user\u id
,因为这样某人就可以将此记录的user\u id设置为其他用户的id,这将是不好的
我认为外键被排除在这个大规模分配安全性之外,如果您通过关联.build
或方法创建一个新对象,外键就会被强制执行
有什么建议吗?我不想回到过去
@restaurant = current_user.restaurants.build(params[:restaurant])
@restaurant.user = current_user
因为这样做违背了.build
的目的,所以您使用的是Rails 3.2.0.rc1吗?这是一个已知错误github.com/rails/rails/issues/4051(已解决)您确定您的参数中没有id
吗?是的!参数哈希中没有id您在使用Rails 3.2.0.rc1吗?这是一个已知的bug(已解决)@Delba thx!是的,我是。应该先检查一下rails的问题。很抱歉folks@patrickdet啊啊!!我有点为自己感到羞耻,但是。。。我可以把这个写进一个答案里吗,这样你就可以接受了,哈哈?