這裏是我的兩個型號:種子的has_many關係質量分配
class Article < ActiveRecord::Base
attr_accessible :content
has_many :comments
end
class Comment < ActiveRecord::Base
attr_accessible :content
belongs_to :article
end
和我想要使用此代碼種子數據庫中seed.rb:
Article.create(
[{
content: "Hi! This is my first article!",
comments: [{content: "It sucks"}, {content: "Best article ever!"}]
}],
without_protection: true)
然而耙分貝:種子給我以下錯誤信息:
rake aborted!
Comment(#28467560) expected, got Hash(#13868840)
Tasks: TOP => db:seed
(See full trace by running task with --trace)
可以像這樣種子數據庫?
如果是後續問題:我搜索了一些,似乎要做這種類型的(嵌套?)批量分配,我需要爲要分配的屬性添加'accep_nested_attributes_for'。 (可能類似於評論模型中的'accep_nested_attributes_for:article')
有沒有辦法讓這個類似於'without_protection:true'?因爲我在接種數據庫時只想接受這種質量分配。
謝謝,它的工作原理。現在唯一的問題是不再需要「without_protection:true」。我並不喜歡公開更多的模型,只是爲了讓種子數據庫更方便:/ – rnd
您在此處公開的唯一新屬性是:comment_attributes,並且因爲這些屬性僅轉發給Comment模型(其中唯一可訪問的屬性是:content),實際上並沒有比以前更多的模型。 – cdesrosiers
換言之,:comments_attributes不是模型的真正組成部分,而是模型屬性的散列(無論如何都可以訪問)。 – cdesrosiers