【发布时间】:2015-08-01 03:24:49
【问题描述】:
在我的种子文件中,我有一堆属于用户的对象和属于用户的对象。
所以我有一个用户,它有一个图书馆,里面有很多书
在我的种子文件中,我设置了一些书籍,例如:
book = Book.new
book.attribute = "attribute"
book.save
library = Library.new
library.books << book
library.save
user = User.new
user.library = library
user.save
发生的情况是创建了一个用户,该用户具有预期的图书馆,但没有创建任何书籍。
当我运行 rails c 时
Book.all
我看到有 0 本书。
为什么会这样?
此外,我创建了一个图书池和 5 个用户,并为每个用户将上面创建的一些相同图书分配给该用户的图书馆。
但是,两者都没有
User.find(1).library.books
返回任何东西或
Book.all
返回任何东西。
编辑:修正了 = Library 而不是 = library 的错字
编辑:发布模型;
用户:
class User < ActiveRecord::Base
before_create :create_library, only: [:new, :create]
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
after_create :send_welcome_email
has_one :library, dependent: :destroy
end
图书馆:
class Library < ActiveRecord::Base
belongs_to :user
has_many :books, dependent: :destroy
end
书:
class Book < ActiveRecord::Base
validates :title, :author, presence: true
belongs_to :library
has_many :sources
has_one :cover, class_name: 'BookCover', dependent: :destroy
mount_uploader :cover, BookCoverUploader
accepts_nested_attributes_for :sources, allow_destroy: true
accepts_nested_attributes_for :cover, allow_destroy: true
end
注意,为了补充为图书模型创建相应的书皮,我只是在 Book 模型上传递了一个值“remote_cover_url”,carrierwave 使用该值在书上创建 BookCover。
【问题讨论】:
-
日志说什么?您是否违反了 Book 课程的限制条件?
-
你能展示你的模型吗?
-
@railsdog 当我在终端中运行 rake db:seed 时,它没有显示任何输出,因此基于它没有显示任何错误
-
@Ansar 您还想知道什么?这是一个模型 -> has_one -> 模型 -> has_many -> 图书关系
-
您对
Book模型进行了一些验证吗?而不是book.save尝试book.save!。执行此操作时是否出现错误?
标签: ruby-on-rails database activerecord rake seeding