簡體   English   中英

Rails / ActiveRecord中的種子關系

[英]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 這是一個壞主意嗎? 我應該改為只創建沒有LevelLesson ,然后再調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM