【发布时间】:2011-06-04 22:02:18
【问题描述】:
看来我的一些种子没有保存。对于初学者,我将显示一个控制台会话,以便您可以看到确实在控制台中设置了“instructor_id”,但不是在我播种时设置的。
ruby-1.9.2-p180 :015 > c = Course.find 2
Course Load (1.6ms) SELECT "courses".* FROM "courses" WHERE "courses"."id" = $1 LIMIT 1 [["id", 2]]
=> #<Course id: 2, name: "Microcomputers II Lab", course_code: "CE-420L", instructor_id: nil, school_id: nil, created_at: "2011-06-04 19:40:32", updated_at: "2011-06-04 19:40:32">
ruby-1.9.2-p180 :016 > c.instructor = Instructor.first
Instructor Load (0.6ms) SELECT "instructors".* FROM "instructors" LIMIT 1
=> #<Instructor id: 1, name: "Instructor Name", created_at: "2011-06-04 19:40:32", updated_at: "2011-06-04 19:40:32">
ruby-1.9.2-p180 :017 > c
=> #<Course id: 2, name: "Microcomputers II Lab", course_code: "CE-420L", instructor_id: 1, school_id: nil, created_at: "2011-06-04 19:40:32", updated_at: "2011-06-04 19:40:32">
通过查看控制台,您可以看到当我调用 c.instructor = Instructor.first 时,它正确设置了我的instructor_id。
现在,在种子文件中我有变量。 (这只是一个sn-p)
### Instructors ###
puts "Creating Instructors"
instructor_1 = Instructor.find_or_create_by_name("Instructor Name")
### Courses ###
puts "Creating Courses"
ce420L = Course.find_or_create_by_name("Microcomputers II Lab", :course_code => "CE-420L")
### Add the Instructor to the Course ###
puts "Adding an Instructor to the Courses"
ce420L.instructor = instructor_1
但是当我使用 'rake db:seed' 运行种子时,它正确地创建了我的所有模型以及我的大部分关系。但它没有正确设置讲师。
想法?
编辑:
刚试过:
ce420 = Course.find_or_initialize_by_name("Microcomputers II")
ce420.instructor_id = instructor_1.id
ce420.save!
它并没有拯救我的导师。
这是我的模型。
class Instructor < ActiveRecord::Base
### ASSOCIATIONS ###
has_many :courses
end
class Course < ActiveRecord::Base
belongs_to :instructor
end
【问题讨论】:
-
等等...问题是没有创建讲师本身?或者课程与讲师无关?
-
课程未与讲师绑定。
-
反正不是我以前的方式,我想创建很多讲师,创建很多课程,然后将所有这些讲师分配给课程。每个都在种子文件中的一个单独区域中。但显然我必须一次完成,这将是一个巨大的痛苦。
-
您不必一次完成所有操作。它只是快一点,因为系统不必两次验证/保存课程。如果更容易的话,你可以把工作分开。
标签: ruby-on-rails associations seed ruby-on-rails-3.1