Я рекомендую вам перейти на использование 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 говорит, что используйте «в одну сторону».