为未由模型表示的表生成种子

时间:2014-04-21 16:03:44

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

如果在我的rails应用程序中,我有一个表示两个对象之间关联的中间表(例如,书籍和作者:一本书有很多作者,一个作者有很多书),我怎样才能用{{ 1}}文件?

更新

seeds.rb

2 个答案:

答案 0 :(得分:1)

我假设你们之间有has_and_belongs_to_many关联。如果是这种情况,那么您可以执行以下操作:

# seeds.rb
author = Author.create(name: 'Mark Twain')
author.books << Book.new(title: 'The Adventures of Tom Sawyer')

要检查的另一件事是:您的无模型表是否正确命名为:authors_books

或者尝试这样写,如果失败,会因为爆炸!而引发更多有用的错误:

# seeds.rb
author = Author.create!(name: 'Mark Twain')
author.books.create!(title: 'The Adventures of Tom Sawyer')

答案 1 :(得分:0)

为什么没有代表这些数据的模型?在大多数情况下,您需要一个表示您存储在数据库中的任何信息的模型。

拥有模型后,您应该可以通过简单的操作轻松创建种子

BookAuthors.create([
            {book_id: 1, author_id: 2}
        ])

在seeds.rb文件中。