我正在阅读下面这篇文章。 http://tutorials.jumpstartlab.com/projects/blogger.html#i2:-adding-comments
以下是我们使用相应Comment
创建新associate
对象和article
的代码。
@comment = Comment.new
@comment.article_id = @article.id
任何人都可以解释一下作者试图在下面说的话。任何人都可以告诉我如何在没有安全事情的情况下做更好的理解。
由于Rails的质量分配保护,
article_id
需要手动分配新Comment
对象的属性 使用id
的{{1}}。
答案 0 :(得分:2)
您正在阅读的文章是指rails 3. Rails 3不使用像Rails 4这样的强参数,而是使用attr_accessible
和允许批量分配的属性列表。
ruby中的质量分配是您使用哈希在new
,create
或assign_attributes
等方法中一次设置多个变量的所有内容。通常,允许批量分配外键并不是一个好主意。
总之,作者的意思是这两行不能写成:
@comment = Comment.new(article_id: @article.id)
由于article_id
未在attr_accessible
中列出,因此会引发群发作业安全例外。