rails中的批量分配问题

时间:2014-05-29 10:10:38

标签: ruby-on-rails ruby-on-rails-4

我正在阅读下面这篇文章。 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}}。

1 个答案:

答案 0 :(得分:2)

您正在阅读的文章是指rails 3. Rails 3不使用像Rails 4这样的强参数,而是使用attr_accessible和允许批量分配的属性列表。

ruby​​中的质量分配是您使用哈希在newcreateassign_attributes等方法中一次设置多个变量的所有内容。通常,允许批量分配外键并不是一个好主意。

总之,作者的意思是这两行不能写成:

@comment = Comment.new(article_id: @article.id)

由于article_id未在attr_accessible中列出,因此会引发群发作业安全例外。