내 두 모델 매스 할당을 사용 :씨 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에서 데이터베이스를 시드하기 위해 노력하고있어 : 그러나 DB를 긁어
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)
이렇게 데이터베이스를 시드 할 수 있습니까?
그렇다면 후속 질문 : 검색 한 결과 중 일부가 이러한 유형의 중첩 할당을 수행하는 것으로 보입니다. 할당하려는 속성에 'accepts_nested_attributes_for'를 추가해야합니다. (아마도 Comment 모델에 대해 'accepts_nested_attributes_for : article'과 같은 것일 수도 있습니다.)
'without_protection : true'와 비슷한 방법이 있습니까? 왜냐하면 나는 데이터베이스를 파종 할 때만 이런 종류의 질량 지정을 받아들이기를 원하기 때문입니다.
comments_attributes: [{content: "It sucks"}, {content: "Best article ever!"}]
에, 그것은 작동합니다. 유일한 문제는 "without_protection : true"가 더 이상 필요하지 않다는 것입니다. 나는 데이터베이스를 시드하는 것이 더 편리하도록 모델의 더 많은 것을 노출하는 것을 정말로 좋아하지 않는다 :/ – rnd여기서 노출하는 유일한 새로운 속성은 comment_attributes이며, 이것들은 Comment 모델로 전달되기 때문에 (액세스 할 수있는 유일한 속성은 content입니다), 실제로는 이전보다 더 많은 모델을 노출하지 않습니다. – cdesrosiers
즉, comments_attributes는 실제로 모델의 일부가 아니라 모델 속성의 해시입니다. 어쨌든 액세스 할 수 있습니다. – cdesrosiers