#ruby-on-rails #mongodb #mongoid
#ruby-на-рельсах #mongodb #mongoid #ruby-on-rails
Вопрос:
Я использую MongoID с rails 3.1. и я хотел бы создать свою базу данных (как в dev, так и в production). У меня есть модель страниц со встроенными каналами. Каков наилучший способ для меня заполнить встроенные каналы для каждой страницы? Я могу легко просмотреть все данные страницы, но не встроенные каналы. Пожалуйста, обратите внимание, что я хочу, чтобы у меня были реальные уникальные данные для этих страниц / каналов, а не только произвольные тестовые данные. Спасибо!
страница.rb (модель)
...
embeds_many :feeds
feed.rb (модель)
class Feed
include Mongoid::Document
field :source, :type => String
field :user, :type => String
embedded_in :страница, :inverse_of => :
конец ленты
db/seeds.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')
Как наилучшим образом я могу встроить некоторые данные фида на каждую страницу? Большое спасибо.
Комментарии:
1. Вы также можете записать свой начальный файл с помощью
.find_or_create_by, .first_or_create! (etc)
, поэтому, если вы обновите свое приложение и свойseeds
файл, вы сможете перезапуститьrake db:seed
его, не стирая базу данных и не рискуя дублированием данных.
Ответ №1:
Page.create(title: "blah", feeds: [
Feed.new(source: "blahblah", user: "me!"),
Feed.new(....),
Feed.new(.....),
])
Вот как я это делаю в моем db:seed
, у меня даже есть несколько глубоких документов.
Ответ №2:
Вы можете сделать что-то вроде этого:
(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
Комментарии:
1. круто, да, то, что я хотел бы сделать, это заполнить базу данных реальными страницами и каналами. Таким образом, в отличие от моего примера, это будет не столько страница 1, страница 2, страница 3, это будет похоже на 10 реальных уникальных страниц. Мне просто нужно знать, как это объяснить. Спасибо.