Rails3 / Mongoid - Basic db: seed со встроенными документами - PullRequest
4 голосов
/ 11 октября 2011

Я использую MongoID с рельсами 3.1.и я хотел бы заполнить свою базу данных (как в разработке, так и в производстве).У меня есть модель страниц со встроенными каналами.Какой лучший способ посеять встроенные каналы для каждой страницы?Я могу легко заполнить все данные страницы, но не встроенные каналы.Обратите внимание, что мне нужны реальные уникальные данные для этих страниц / каналов, а не только произвольные тестовые данные.спасибо!

page.rb (модель)

...
embeds_many :feeds

feed.rb (модель)

class Feed
include Mongoid::Document
field :source, :type => String
field :user, :type => String

embedded_in: page,: inverse_of =>: конец канала

db / seed.rb

Page.create(title: "Page 1", userID: "EMAIL@gmail.com", presentation: 'cards', customURL: 'testing1')
Page.create(title: "Page 2", userID: "EMAIL@gmail.com", presentation: 'cards', customURL: 'testing2')
Page.create(title: "Page 3", userID: "EMAIL@gmail.com", presentation: 'cards', customURL: 'testing3')
Page.create(title: "Page 4", userID: "EMAIL@gmail.com", presentation: 'cards', customURL: 'testing4')
Page.create(title: "Page 5", userID: "EMAIL@gmail.com", presentation: 'cards', customURL: 'testing5')

Как лучше всего встраивать данные фида в каждую страницу?Большое спасибо.

Ответы [ 2 ]

6 голосов
/ 11 октября 2011
Page.create(title: "blah", feeds: [
  Feed.new(source: "blahblah", user: "me!"),
  Feed.new(....),
  Feed.new(.....),
])

Это то, как я делаю это в моем db:seed, у меня даже есть несколько документов с несколькими документами.

0 голосов
/ 11 октября 2011

Вы можете сделать что-то вроде этого:

(1..5).each do |i|
  page = Page.create(title: "Page #{i}", userID: "EMAIL@gmail.com", presentation: 'cards', customURL: "testing#{i}")

  3.times { Feed.create(page: page) }
end
...