这些创建方法之间的区别是什么

时间:2011-01-30 03:08:40

标签: ruby-on-rails ruby-on-rails-3

嘿,我被困在铁轨上。

我有一个用户模型,一个课程模型和一个CourseEnrollment模型。

当我想在我的课程索引视图中添加链接时,如

link_to 'join' CourseEnrollment.create(:course_id => course.id, :user_id => current_user)

这个create方法是否属于我的模型?我很困惑,因为在我的用户模型中我定义了一个使用role_assignments.create(.....)的方法。这两种创建方法有什么区别?顺便说一句,我不能使用course_enrollments.create。感谢你的时间

1 个答案:

答案 0 :(得分:2)

我对你的要求感到有点困惑,但我会尽我所能。

(首先,在您的示例中,current_user应该是current_user.id。)

当您致电CourseEnrollment.create时,您只需创建一个具有指定属性的新CourseEntrollment模型。

假设您的User模型has_many :role_assignments

当您从@role_assignments.create模型中呼叫User时,Rails会自动为您创建关联(例如,将user_id设置为用户的id。但是,这不必在模型本身内完成:

current_user.role_assignments.create(...) # automatically sets the association

假设您的User模型 has_many :course_enrollments,以下内容将创建CourseEnrollment模型并自动将其与当前用户关联:

current_user.course_enrollments.create(...)