这两种不同的方法是在强对数中编写嵌套属性吗?

时间:2015-03-19 17:56:21

标签: ruby-on-rails ruby-on-rails-4 nested-attributes strong-parameters

我正在使用嵌套属性和强参数,我已经看到了两种在强对数中嵌套属性的方法。

举个例子:

class Post < ActiveRecord::Base
has_many :comments
accepts_nested_attributes, :comments

class Comments < ActiveRecord::Base
belongs_to :post

我在Post Controller中看到了这两种嵌套参数的方法,有区别吗?

params.require(:post)
      .permit(:title, :id, :author, :comment => [:id, :content, :post_id, :user_id])

params.require(:post)
      .permit(:title, :id, :author, comments_attributes: [:id, :content, :post_id, :user_id])


它们看起来很相似......通常我会认为其中一个是早期版本,但我相信强大的params相对较新。有什么区别?

1 个答案:

答案 0 :(得分:1)

Ruby中只有两种不同的哈希语法

params.require(:post).permit(:title, :id, :author, :comments_attributes => [:id, :content, :post_id, :user_id])

params.require(:post).permit(:title, :id, :author, comments_attributes: [:id, :content, :post_id, :user_id])

是相同的

添加accepts_nested_attributes_for :comments时,会创建一个comments_attributes方法。 comments方法会期望一个数组,不确定如果你发送一个注释参数会怎么做,也许什么都没有。其他“嵌套参数”示例的链接与accepts_nested_attributes不同。