1

在我的 Rails 3.2.8 项目的 db/seeds.rb 文件中,我创建了种子数据:

level_1 = Level.create(number: 1)

我的级别模型是:

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,我收到以下错误:

耙中止!无法批量分配受保护的属性:级别

我如何让它工作,我需要添加:level到我attr_accessible的课程模型中的元素列表吗?这是一个坏主意吗?我是否应该简单地创建一个Lesson没有 a 的Level然后调用lesson.level = level_1

UDPATE:在seeds.rb 文件中的rails 生成的注释显示了这个例子:

cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
Mayor.create(name: 'Emanuel', city: cities.first)
4

1 回答 1

1

你想能够批量分配level吗?换句话说,如果Lesson对象的表单可以设置级别属性,会不会有害?

如果它不会引起问题,请继续将其添加到 中attr_accessible,并继续做你现在正在做的事情。

如果导致问题,.new请手动使用并设置:

lesson = Lesson.new
lesson.level = level_1
lesson.save
于 2012-09-14T19:43:30.273 回答