我正在使用嵌套属性和强参数,我已经看到了两种在强对数中嵌套属性的方法。
举个例子:
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相对较新。有什么区别?
答案 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
不同。