has_many :through リレーションシップで見事に機能しているこのチュートリアルに従っています。私は、category_product のような通常の機能を持っています。
ただし、この状況を概念化することはできません (また、機能させることもできません)。関連するカテゴリを持つカテゴリがあります。すべてのカテゴリには N 個のカテゴリを含めることができるため、最初に、これは実際には多対多の状況ですか (私はそうであると確信しています)。第二に、これはどのように見えるでしょうか?私の移行は次のようになります。
create_table :categories do |t|
t.string :name
t.timestamps
end
create_table :related_categories, :id => false do |t|
t.integer :category_a_id
t.integer :category_b_id
end
そして私のモデルの根性は
has_many :related_categories, :foreign_key=>"category_a_id"
has_many :categories, :through => :related_categories, :source=>:category_a
これは明らかに正しいことではありませんが、それは達成されつつあります (つまり、100% 壊れています)。これどうやってするの?
編集:私はこれを忘れましたが、ここでのみ SO (答えではないことを意味します):
class RelatedCategory < ActiveRecord::Base
belongs_to :category_a, :class_name=>"Category"
belongs_to :category_b, :class_name=>"Category"
end