在我的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
时,我收到以下错误:
耙子流产了!无法批量分配受保护的属性:级别
如何让它工作,我是否需要将:level
添加到Lesson模型中的attr_accessible
元素列表中?这是一个坏主意吗?我应该简单地创建一个Lesson
而不是Level
然后再调用lesson.level = level_1
吗?
UDPATE :在seeds.rb文件中生成的rails会显示以下示例:
cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
Mayor.create(name: 'Emanuel', city: cities.first)
答案 0 :(得分:1)
您希望能够批量分配level
吗?换句话说,如果课程对象的表单可以设置级别属性,那会有害吗?
如果不会导致问题,请继续将其添加到attr_accessible
,并继续执行您现在正在做的事情。
如果 会导致问题,请使用.new
并手动设置:
lesson = Lesson.new
lesson.level = level_1
lesson.save