【发布时间】:2015-05-24 23:40:52
【问题描述】:
我有一个用户模型,它有一个图书馆,里面有很多书。
在我的种子文件中,我这样做:
user1 = User.new
user1.email = "test@email.com"
user1.name = "testname"
user1.password = "password"
user1.library = Library.new
user1.library.save!
book1 = Book.create!(hash_of_attributes)
user1.library.books << book1
puts "book1 library_id " + book1.library_id.to_s
user1.save!
puts "book1 library_id " + book1.library_id.to_s 这行清楚地输出了 1 的值,所以我们知道 library_id 属性在新创建的 Book 模型上设置为 1。
但是,在运行 rake db:seed 之后,我运行 rails 控制台并执行以下操作:
User.first.library.books
只为找到
<ActiveRecord::Associations::CollectionProxy []>
运行 Book.first 显示
library_id: nil
所以这本书是创建的,只是它没有与我的图书馆正确关联,而我的图书馆与我的用户模型正确关联。
发生了什么事?
运行 Rails 4.1.6
【问题讨论】:
-
需要保存用户的id才能成为库的外键。
-
我试过了(尽管它们的型号名称不同,但关系相同),但你的代码对我有用。我的Rails的版本是4.1.7,不知道是不是这个问题
标签: ruby-on-rails ruby activerecord rake