Отзывы от Rails Association + Вопросы от Noob - PullRequest
0 голосов
/ 24 октября 2010

Предисловие:

Если вы зависаете в #rubyonrails на freenode, это может звучать как эхо для вас, как я и просил об этом 2 дня назад.Потратив несколько часов на изучение ассоциаций AR, после моих дискуссий в #rubyonrails, я все еще чувствую себя потерянным, поэтому я спрашиваю здесь.:)

Цель

У меня есть несколько блогов.Мое намерение - создать пакетные представления, в которых я принимаю сообщение, выбираю блоги, в которые я хочу отправить сообщение, а затем назначаю пакету дату отправки.Позже я хотел бы создать Работника, который запрашивает Пакеты, а затем фактически отправляет Пост в связанные с ним Блоги.

Путаница

Я не совсем понимаю, какЯ должен настроить свои ассоциации и соответствующие таблицы.

Вот что у меня есть для моделей.

class Blog < ActiveRecord::Base
  has_many :submissions
  has_many :posts, :through => :submissions
end


class Post < ActiveRecord::Base
  has_many :submissions
  has_many :blogs, :through => :submissions
end


class Submission < ActiveRecord::Base
  belongs_to :post
  belongs_to :blog
end

Вот что у меня есть для таблиц.

[Blogs]
id         :integer         not null, primary key
title      :string(255)
etc

[Posts]
id         :integer         not null, primary key 
subject    :string(255)
content    :text
etc

[Submissions]
id          :integer         not null, primary key
submit_date :datetime
post_id     :integer
forum_id    :integer
etc

Вопросы

  • В настоящее время у меня нет серийной модели. Должен ли я иметь это?Или "пакет" может быть выведен путем обратного отслеживания представлений?
  • Если у меня должна быть модель Пакетов, будет ли это означать, что модель Submisson получит дополнительный внешний ключ?
  • Есть ли еще "rails way "сделать это?
  • Любые другие входные данные приветствуются!

Большое спасибо за чтение этого гигантского поста.

1 Ответ

1 голос
/ 27 января 2011

В вашей таблице представлений я бы предложил вам изменить forum_id на blog_id, чтобы соответствовать соглашению Rails ethos по конфигурации.В противном случае вам нужно будет указать, что forum_id является ключом Foreign_key для представлений.

Так что либо [предпочитается]:

[Submissions]
id          :integer         not null, primary key
submit_date :datetime
post_id     :integer
**blog**_id    :integer
etc

Или:

class Blog < ActiveRecord::Base
  has_many :submissions, :foreign_key => "forum_id"
  has_many :posts, :through => :submissions
end

На основеописание, я не верю, что вам нужна другая модель, просто используйте поле submit_date в таблице представлений.

...