Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何在不考虑rails4强参数的情况下创建模型_Ruby On Rails 4_Strong Parameters - Fatal编程技术网

Ruby on rails 4 如何在不考虑rails4强参数的情况下创建模型

Ruby on rails 4 如何在不考虑rails4强参数的情况下创建模型,ruby-on-rails-4,strong-parameters,Ruby On Rails 4,Strong Parameters,考虑到attr_ACCISSUBLE不再受支持,在任何地方都无法找到创建模型的可接受方法,而无需通过控制器 下面的方法正确吗 在我的旧代码中: ModelName.create(course_id:680, user_id:25) (由于我已删除属性,因此引发质量分配错误) 新代码: model = ModelName.new.tap do |m| m.course_id = 680 m.user_id = 25 end model.save! (可以工作,但看起来很粗糙) ,以下

考虑到attr_ACCISSUBLE不再受支持,在任何地方都无法找到创建模型的可接受方法,而无需通过控制器

下面的方法正确吗

在我的旧代码中:

ModelName.create(course_id:680, user_id:25)
(由于我已删除属性,因此引发质量分配错误)

新代码:

model = ModelName.new.tap do |m| 
  m.course_id = 680
  m.user_id = 25
end
model.save!
(可以工作,但看起来很粗糙)

,以下选项将不起作用,因为在Rails4中删除了“无保护”选项

ModelName.create({course_id: 680, user_id: User.first.id}, without_protection: true)
多亏了我阅读了有关强参数“在控制器之外使用”的内容,但即使我在控制台上执行以下操作:

raw_params = {course_id: Course.last.id, user_id: User.first.id}
parameters = ActionController::Parameters.new(raw_params)
ModelName.create(parameters.permit(:course_id, :user_id))
我犯了一个错误

WARN -- : WARNING: Can't mass-assign protected attributes for ModelName: course_id, user_id
我读得更仔细了,找到了我的答案

我必须补充一点

config.active_record.whitelist_attributes = false
对于我的环境(development/test/production.rb),可能是因为我仍然安装了protected_属性

所以现在我可以愉快地使用

ModelName.create(course_id:680, user_id:25)
毕竟


我意识到这个问题/答案有点重复上述问题-但我确实发现这个问题有点难以理解,因此,除非有人问我,否则我不会回答这个问题。

如果您的模型可以选择批量分配属性,您可以通过在您的环境/development.rb文件中将此行
config.active\u record.mass\u assignment\u sanitizer=:strict
更改为
config.active\u record.mass\u assignment\u sanitizer=:logger
,来避免这种情况