Для моего проекта у меня есть сообщение, связанное с категорией. То, что я хочу достичь, состоит в том, чтобы иметь категорию, которая является родственником других. Как это:Рекурсивные отношения во многих отношениях на Rails
c1 = Category.create(name: 'Television')
c2 = Category.create(name: 'TV')
c1.relatives << c1
Я использую присоединиться к таблице:
create_table :category_relative, id: false do |t|
t.belongs_to :category_1
t.belongs_to :category_2
end
add_index :category_relative, [:category_1_id, :category_2_id]
До сих пор, я попытался это:
class Category < ActiveRecord::Base
has_and_belongs_to_many :relatives, class_name: 'Category',
join_table: 'category_relative', foreign_key: 'category_1_id',
association_foreign_key: 'category_2_id'
end
Это работает, но только в одном виде:
c1.relatives
=> []
c2.relatives
=> [#<Category:0x007fcc610b8418 id: 1, name: 'Television']
Я знаю, что я могу добавить родственника для e но это слишком тяжело для моей базы данных:
c1.relatives << c2
c2.relatives << c1
У вас есть информация? Должен ли я писать JOIN вручную?
Вы используете другие таблица между категориями? – ppascualv
Я использую таблицу соединений 'category_relative' (я редактирую свой ответ) – cappie013
Вы уже решили вопрос? – ppascualv