Хорошее имя для А имеет много через ассоциацию
Я прочитал о многих отношениях со многими в 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 ответа:
Прежде всего, не на самом деле идея имеет много суб-идеи? Это звучит как странное отношение, которое должно быть нормализовано / пересмотрено.
@gabrielhilal делает хорошее предложение, но я бы рекомендовал сделать резервную копию и переименовать таблицы
Idea
иTop
, чтобы они были немного менее непрозрачными. Например, если Top-это сокращение от Topic,Idea
кажется более "комментарием" к теме, то ваш сквозной класс может быть TopicComment или что-то еще.В любом случае, я думаю, что вы должны начать с переименование этих таблиц, чтобы сделать их немного более осмысленными (или объяснить их нам, чтобы мы поняли), затем переходим к предложению @gabrielhilal просто использовать комбинацию двух таблиц, чтобы назвать объединенную таблицу - , что является обычной практикой, если третья таблица не имеет своего собственного специфического значения (или имеет свои собственные атрибуты), например Product + Sale = Invoice (где invoice-это объединенная Таблица)