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