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なしで aを作成し、Levelその後 を呼び出す必要がありlesson.level = level_1ますか?

UDPATE : レールによって生成された、seeds.rb ファイル内のコメントは、次の例を示しています。

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

1 に答える 1

1

を一括割り当てできるようにしlevelますか? 別の言い方をすれば、Lesson オブジェクトのフォームで level 属性を設定できると有害でしょうか?

それが問題を引き起こさない場合は、先に進んで に追加しattr_accessible、現在行っていることを続けてください。

問題が発生する場合は、手動で使用.newして設定します。

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