[英]Seeding relationships in Rails/ActiveRecord
在我的Rails 3.2.8項目的db / seeds.rb文件中,創建種子數據:
level_1 = Level.create(number: 1)
我的Level模型是:
class Level < ActiveRecord::Base
attr_accessible :number
has_many :lessons
end
因此,我想播種課程:
Lesson.create(number: 5, level: level_1)
其模型是:
class Lesson < ActiveRecord::Base
attr_accessible :level_id, :number
belongs_to :level
end
當我運行rake db:setup
,出現以下錯誤:
耙子流產了! 無法批量分配受保護的屬性:級別
我如何使其工作,是否需要在Lesson模型中的attr_accessible
元素列表中添加:level
? 這是一個壞主意嗎? 我應該改為只創建沒有Level
的Lesson
,然后再調用lesson.level = level_1
嗎?
UDPATE :rails在seed.rb文件中生成的注釋顯示了以下示例:
cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
Mayor.create(name: 'Emanuel', city: cities.first)
您想批量分配level
嗎? 換句話說,如果能夠將Lesson對象的表單設置為level屬性,是否有害?
如果這不會引起問題,請繼續將其添加到attr_accessible
,並繼續做您現在正在做的事情。
如果會引起問題,請使用.new
並手動進行設置:
lesson = Lesson.new
lesson.level = level_1
lesson.save
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.