Есть ли способ Rails или гем, чтобы получить связанные записи из HABTM для того же объекта? - PullRequest
3 голосов
/ 29 сентября 2011

Ну, у меня есть таблица с изображениями, каждое изображение помечено отношением HABTM через таблицу соединений.

Я хочу показать похожие изображения на странице, на которой отображается изображение, сопоставив изображения с одинаковыми тегами.

Может ли это быть эффективно сделано с текущей таблицей соединений, или я должен генерировать объединения между изображениями в другой таблице каждый раз, когда создается новое изображение?

1 Ответ

3 голосов
/ 29 сентября 2011

Я рекомендую вам перейти на использование has_many :items, :through => :link_table
Это стало новым стандартом, и это отличный подход, потому что вы получаете больше гибкости, и структура также готова к легкому расширению и росту без значительных переделок,например, добавление новых атрибутов очень просто.«новые атрибуты» часто являются полями даты.
Таким образом, вы можете добавить обычные поля меток времени (созданные и обновленные), и люди также найдут другие поля даты, такие как «завершено», «авторизовано», «прекращено», «активировано», «активировано»sold_on 'и т. д. полезно, в зависимости от случаев использования приложения.

class Image < ActiveRecord::Base
  has_many :image_tags
  has_many :tags, :through => :image_tags
end

class ImageTag < ActiveRecord::Base
  belongs_to :image
  belongs_to :tag
end

class Tag < ActiveRecord::Base
  has_many :image_tags
  has_many :images, :through => :image_tags
end

Вы по-прежнему увидите множество примеров HABTM, и он все еще работает.Конечно, бывают случаи, когда его все еще имеет смысл использовать, но, как бы то ни было, HMT их использует, KISS говорит, что используйте «в одну сторону».

...