的Rails belongs_to的关联没有工作
这是我的课程模式的Rails belongs_to的关联没有工作
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">
您需要删除模型中的attr_accessor :course_id
行。如果你有这条线,它将在你的模型中创建以下与默认定义内容相冲突的方法
def course_id
@course_id
end
def course_id=(cid)
@course_id = cid
end
如果我删除该行,我得到这个错误“ActiveModel :: MassAssignmentSecurity ::错误:无法批量分配受保护的属性:courses_id” – 2013-03-15 13:17:55
你传递'courses_id'而不是'course_id'。检查你的代码。 – jvnill 2013-03-15 13:19:26
我纠正错误课程的错误,但原始问题在那里,因为它是 – 2013-03-15 13:25:23
删除attr_accessor :course_id
在您的Lesson
模型。这将覆盖activerecord的默认行为。
如果我删除该行,我得到这个错误“ActiveModel :: MassAssignmentSecurity ::错误:无法批量分配受保护的属性:courses_id“ – 2013-03-15 13:18:14
你真正想要的是'attr_accessible:course_id'。 – thomasfedb 2013-03-15 16:47:46
你在创建'lesson'时是否通过了'course_id'?发布创建'课程'的代码。 – shweta 2013-03-15 12:44:54
是选择下拉菜单中显示的课程我选择课程附加课程,但在课程显示页面课程字段为零 – 2013-03-15 12:53:46
因为'course_id'没有保存。在'Lesson'模型中放置'validates:course_id,:presence => true'行。它不会让任何'课程'创建与'零course_id' – shweta 2013-03-15 13:00:16