【发布时间】:2019-12-11 11:04:25
【问题描述】:
我目前正在尝试了解允许的参数在 ruby 中是如何工作的。
通常,在 my_model.rb 我有:
has_many: some_other_model
*
*
*
def my_model_params
params.require(:my_model).permit( :column1, some_other_model_attributes %i[other_column1])
etc...
在更新函数中
my_object.update_attributes(my_model_params)
具有格式良好的 json,其中包含一些 my_model 根,以及 some_other_model_attributes 作为具有值的子(数组)。
我的问题是我收到一个像这样的 json
但是里面的不同数组(例如codification、general_information)确实包含了任务的属性(general_information 包含reference,这是一个列在任务表中),但没有任何名为 codification 的列,或与 codification_attributes 的关系。
所以,当我添加:
general_information: %i[reference] 在允许的参数中,它说unknown attribute 'general_information' for Mission。
如果没有,则不会引发错误,但在日志中我可以看到 unpermitted_parameter: general_information。而且我的对象没有更新。
最后,如果我拒绝它,日志中将不再有unpermitted_parameter: general_information,但我的对象也没有更新。
我尝试在我的开发配置中将 config.action_controller.action_on_unpermitted_parameters 设置为 false,但它什么也没做,而且这对于生产环境来说可能是个坏主意。
目前不能使用.permit!(即使它有效)。尽管我认为 json 需要重新格式化,但最好找到其他解决方案。
感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-5 actioncontroller