Модели -> has_many -> Дважды - PullRequest
4 голосов
/ 24 мая 2011

Так что у меня здесь несколько запутанная связь между Заметкой, Группой и Пользователем. И в моей модели я дважды использовал has_many. Но в настоящее время я сосредоточен на отношениях Note & Group.

Фон: группа может иметь заметку. Пользователь также может иметь заметку. Вот почему моя нота полиморфна. Однако я также создал модель соединения под названием Tag, чтобы заметка могла принадлежать нескольким группам. В моем коде, однако, я получил несколько has_many: notes. Смотрите весь мой код ниже. Каков был бы правильный способ сделать что-то подобное?

Заранее спасибо!

note.rb

belongs_to :notable, :polymorphic => true
has_many :tags
has_many :groups, :through => :tags

user.rb

has_many :notes, :as => :notable

group.rb

has_many :notes, :as => :notable
has_many :tags
has_many :notes, :through => :tags

tag.rb

belongs_to :note
belongs_to :group

1 Ответ

5 голосов
/ 24 мая 2011

Вам просто нужно дать ему другое имя.

class Group
  has_many :notes, :as => :notable
  has_many :tags
  has_many :tagged_notes, :class_name => 'Note', :through => :tags
end

Если вам нужна только одна нота для части :as => :notable (это не очень понятно в вашем вопросе), вы можете простосделайте это:

class Group
  has_one :note, :as => :notable
  has_many :tags
  has_many :notes, :through => :tags
end

Имена просто должны быть разными.Хотя с note против notes может быть не очень понятно, в чем различие в других частях вашего кода.

...