0

これが私のコースモデルです

class Course < ActiveRecord::Base
  attr_accessible :longdescription, :shortdescription, :title, :published_at
  has_many :lessons,  :foreign_key => 'course_id'
end

そしてこれが私のレッスンモデルです

class Lesson < ActiveRecord::Base
  belongs_to :course, :class_name => 'Course'
  attr_accessor :course_id
  attr_accessible :description, :title, :course_id
end

コースに属するレッスンを作成します。レッスンが正常に作成されました

 Lesson.create(:title => "testing", :description => "causing problems", :course_id => 1)

しかし、レッスンのレコードを取得すると、course_id=nilが得られました。ヘルプ???

<Lesson id: 8, title: "testing", description: "causing problems", course_id: nil, created_at: "2013-03-15 12:56:36", updated_at: "2013-03-15 12:56:36">
4

2 に答える 2

2

モデルから削除attr_accessor :course_idします。Lessonこれにより、activerecordのデフォルトの動作が上書きされます。

于 2013-03-15T13:02:59.430 に答える
2

attr_accessor :course_idモデルの線を削除する必要があります。この行がある場合、デフォルトで定義されているものと競合する次のメソッドがモデルに作成されます

def course_id
  @course_id
end

def course_id=(cid)
  @course_id = cid
end
于 2013-03-15T13:03:10.513 に答える