2011-01-24 51 views
0

我得到以下模型。连接表引用user_id和course_id,并将组合设置为唯一。然而,在服务器上测试我的页面之后,例如多次离开和加入课程,另外还有另一个current_user,我的连接表创建了course_id为空的记录。这让我在以后获取数据时出错。所以现在我试着增加:false => null。这可以帮助吗? THX您的时间连接表在轨中创建无意的NULL条目

def self.up 
    create_table :course_enrollments do |t| 
    t.references :user, :null => false 
    t.references :course, :null => false 
    t.timestamps 
end 
    add_index :course_enrollments, [:user_id, :course_id], :unique => true 
end 
+0

你可以发布加入和离开课程的代码吗? – 2011-01-24 22:06:36

回答

1

添加:null => false将导致异常,当您尝试保存CourseEnrollment与空ID。如果您编写控制器操作来处理异常,那很好。您可以(也应该)在CourseEnrollment模型中添加validates_presence_of :user_id, :course_id,以便具有空ID的实例无效,并且可以使用正常的<model>.save方法进行处理。

然而,更大的问题是,为什么您的应用程序首先保存具有空ID的行?例如,您可能正在创建孤行(通过删除关联的课程或用户)。通常最好在has_many关联上添加:dependent => :destroy以防止出现这种情况。

+0

thx为您的答复! – daniel 2011-01-24 22:11:11