【发布时间】:2015-03-02 23:49:19
【问题描述】:
对于我的项目,我有一些链接到类别的帖子。我想要实现的,是拥有与他人相对的类别。像这样:
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']
我知道我可以为每个条目添加一个亲戚,但这对我的数据库来说太重了:
c1.relatives << c2
c2.relatives << c1
你有什么想法吗?我应该手动编写 JOIN 吗?
【问题讨论】:
-
您是否在类别之间使用另一个表?
-
我使用连接表 'category_relative'(我编辑我的答案)
-
你的问题已经解决了吗?
标签: mysql ruby-on-rails ruby