Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails rake db:seed不创建属于另一个对象的对象?_Ruby On Rails_Database_Activerecord_Rake_Seeding - Fatal编程技术网

Ruby on rails Rails rake db:seed不创建属于另一个对象的对象?

Ruby on rails Rails rake db:seed不创建属于另一个对象的对象?,ruby-on-rails,database,activerecord,rake,seeding,Ruby On Rails,Database,Activerecord,Rake,Seeding,在我的种子文件中,我有一堆属于用户的对象和属于用户的对象 所以我有一个用户,他有一个图书馆,里面有很多书 在我的种子文件中,我设置了一些书,如: book = Book.new book.attribute = "attribute" book.save library = Library.new library.books << book library.save user = User.new user.library = library user.save 我看到有0本书

在我的种子文件中,我有一堆属于用户的对象和属于用户的对象

所以我有一个用户,他有一个图书馆,里面有很多书

在我的种子文件中,我设置了一些书,如:

book = Book.new
book.attribute = "attribute"
book.save

library = Library.new
library.books << book
library.save

user = User.new
user.library = library
user.save
我看到有0本书

为什么会这样

此外,我创建了一个图书池和5个用户,并为每个用户分配了一些上面创建的相同图书给该用户库

然而,两者都不是

User.find(1).library.books
归还任何东西或

Book.all
归还任何东西

编辑:修复了输入=Library而不是=Library的错误 编辑:发布模型; 用户:

class用户
图书馆:

class Library < ActiveRecord::Base
  belongs_to :user
  has_many :books, dependent: :destroy

end
类库
书籍:

classbook

注意,为了补充为图书模型创建相应的封面,我只需在图书模型上传递carrierwave用于在图书上创建封面的“remote_cover_url”的值。正如@newmediafreak提到的,您可能对图书类进行了验证,以防止其被保存

我建议通过关联创建您的
有多个
有一个
实例:

user=user.create!
library=user.library.create!
book=user.books.create!(属性:“我的属性”)

使用
Object.create语法将导致错误<代码>对象。保存
以静默方式失败

编辑10:48 PDT
您有一个输入错误:
user.library=library
应该是
user.library=library
,但我仍然建议通过关联创建library和图书。

日志怎么说?您是否违反了Book类的约束?您可以显示您的模型吗?@railsdog当我在终端中运行rake db:seed时,它不会显示任何输出,因此基于此,它不会显示任何输出errors@Ansar你还想知道什么?这是一个模型->有一个->模型->有很多->图书关系你对你的
图书
模型有一些验证吗?而不是
book.save
尝试
book.save。当你这样做的时候,你会得到一个错误吗?不幸的是,上面的方法都不起作用。运行seed后,用户将使用各自的库创建,但即使使用.save,也不会保存任何书籍!或者做一本书。创造!(这里是params_hash_)没有意义的是,在rails控制台中,以我上面的方式播种数据可以很好地工作,在那里我得到一个book1、library1和user1,然后执行library1.books@adambrongin。在控制台中工作很奇怪。我不介意发布这三个模型的代码(至少是关联和有效性)。因此,在更仔细地遵循这些步骤之后,rails控制台中使用book.create(hash)创建一本书的方法是有效的,但在退出并重新进入控制台时,即使我显式保存了该书并成功提交,该书也不再保留
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