私は2つのモデルを持っています:
モデルNetworkObjectは、「ホスト」を記述しようとします。ソースと宛先のルールが必要なので、2つの異なるクラスを作成しても意味がないため、同じクラスの両方のオブジェクトを使用しようとしています。
class NetworkObject < ActiveRecord::Base
attr_accessible :ip, :netmask, :name
has_many :statements
has_many :rules, :through =>:statements
end
class Rule < ActiveRecord::Base
attr_accessible :active, :destination_ids, :source_ids
has_many :statements
has_many :sources, :through=> :statements, :source=> :network_object
has_many :destinations, :through => :statements, :source=> :network_object
end
HABTMを構築するために、私はモデルJOINを選択しました。したがって、この場合、Statementという名前のモデルを次のように作成しました。
class Statement < ActiveRecord::Base
attr_accessible :source_id, :rule_id, :destination_id
belongs_to :network_object, :foreign_key => :source_id
belongs_to :network_object, :foreign_key => :destination_id
belongs_to :rule
end
問題は次のとおりです。異なるforeign_keysを使用して2つのbelongs_toを同じクラスに追加するのは正しいですか?私は次のようなすべての組み合わせを試しました:
belongs_to :sources, :class_name => :network_object, :foreign_key => :source_id
しかし成功しません..私が間違っていることは何ですか?