【发布时间】:2015-08-03 19:35:39
【问题描述】:
到目前为止,我已经建立了几个 Rails 站点(使用起来非常愉快的框架),但我逐渐注意到我学习强参数的猴看猴做方法显然在我的理解上留下了一两个差距.
看下面一个简单的例子(Recipe Box by mackenziechild)
def recipe_params
params.require(:recipe).permit(:title, :description, :image, ingredients_attributes: [:id, :name, :_destroy], directions_attributes: [:id, :step, :_destroy])
end
我实际上不知道他为什么能够引用:recipe 作为参数。我对参数的松散理解是它们本质上是表中的列,但是上面的示例暗示它们也可以是表本身的名称。 (没有一列被命名为“recipe”,尽管其中一个表被命名为“recipes”)。
如果我生成模型MyThing(单数CamelCase)并因此生成相应的表my_things(复数snake_case),我是否正确理解,我自动有一个相应的参数:my_thing(单数snake_case冒号)供我使用?
我的问题如下:
- 以上理解准确吗?
- 除了表名和列名之外,是否还有其他参数对应于其他参数?如果有,它们是什么?
- 有没有办法列出我可以使用的参数(类似于
rake routes)?
非常感谢您提供的任何澄清!
【问题讨论】:
-
参数就是:参数。这是一个哈希。对于食谱,它们位于哈希键
:recipe下。它不是表或列的名称,它只是一个哈希键。其余的也是如此。如果您希望能够传入参数,则必须允许 - 它们可以任意命名,例如,您可以传入不属于任何表的隐藏字段。
标签: ruby-on-rails activerecord model-view-controller rails-activerecord strong-parameters