Хорошее имя для А имеет много через ассоциацию


Я прочитал о многих отношениях со многими в rails 3 и увидел, что HABTM был "устаревшим", так как в one следует использовать has_many :through большую часть времени.

Я видел множество примеров, когда модель соединения имеет четкое название, например Magazine, Suscriber = Subscriptions.

Но в моем случае я не могу найти хорошего имени: / есть ли какая-то Конвенция, о которой я должен знать? Топ содержит 1 или * идеи, а идея может быть в 1 или * вершинах. Наконец, является ли это лучшим способом для этого вообще?

Здесь это мой код:

class Top < ActiveRecord::Base  
  has_many :???  
  has_many :ideas, :through => :???  
end

class Idea < ActiveRecord::Base  
  has_many :???  
  has_many :ideas, :through => :???  
end

class ??? < ActiveRecord::Base  
  belongs_to :top  
  belongs_to :idea  
end

Также с помощью has_many через Мне не нужно создавать вручную таблицу соединения правильно ?

Спасибо за любую помощь:)

Правка:
Вершина - это как рейтинг. Таким образом, вершина-это представление идей, отсортированных по их голосам. Идея есть идея (вообще). Может быть, например, топ лучших практик для ruby on rails и идея "использовать has_many through вместо HABTM".
Таким образом, вершина содержит 1 или * идеи, а идея может принадлежать 1 или * вершинам. Для идей это больше относится к классу belongs_to_many, но он не существует в ror.

2 3

2 ответа:

Прежде всего, не на самом деле идея имеет много суб-идеи? Это звучит как странное отношение, которое должно быть нормализовано / пересмотрено.

@gabrielhilal делает хорошее предложение, но я бы рекомендовал сделать резервную копию и переименовать таблицы Idea и Top, чтобы они были немного менее непрозрачными. Например, если Top-это сокращение от Topic, Idea кажется более "комментарием" к теме, то ваш сквозной класс может быть TopicComment или что-то еще.

В любом случае, я думаю, что вы должны начать с переименование этих таблиц, чтобы сделать их немного более осмысленными (или объяснить их нам, чтобы мы поняли), затем переходим к предложению @gabrielhilal просто использовать комбинацию двух таблиц, чтобы назвать объединенную таблицу - , что является обычной практикой, если третья таблица не имеет своего собственного специфического значения (или имеет свои собственные атрибуты), например Product + Sale = Invoice (где invoice-это объединенная Таблица)

Нам нужно понять значение Idea и Top, а также их взаимосвязь (почему это много-ко-многим), чтобы предложить вам подходящее имя.
Однако, если вы не можете найти имя со значением для этого класса, вы можете использовать что-то вроде IdeaTop или TopIdea...