У меня есть следующие модели:
class Mark < ActiveRecord::Base
validates_presence_of :user
validates_presence_of :page
belongs_to :user
has_many :mettings
has_many :tags, :through => :mettings
has_many :terms, :through => :mettings
end
class Metting < ActiveRecord::Base
belongs_to :mark
belongs_to :user
belongs_to :tags, :foreign_key => :metum_id, :class_name => "Metum"
belongs_to :terms, :foreign_key => :metum_id, :class_name => "Metum"
end
class Metum < ActiveRecord::Base
validates_presence_of :type
validates_presence_of :name
has_many :mettings
has_many :marks, :through => :mettings
end
class Tag < Metum
end
class Term < Metum
end
И проблема в том, что, когда я ищу «теги» или «термины» Марка или Меттинга, я получаю все «теги» и"условия" для этой марки или меттинга.Например:
>> met = Metting.find(9)
Metting Load (0.3ms) SELECT `mettings`.* FROM `mettings` WHERE `mettings`.`id` = 9 LIMIT 1
=> #<Metting id: 9, mark_id: 1, metum_id: 1, user_id: 1, created_at: "2011-10-31 10:53:01", updated_at: "2011-10-31 10:53:01">
>> met.tags
Metum Load (0.3ms) SELECT `meta`.* FROM `meta` WHERE `meta`.`id` = 1 LIMIT 1
=> #<Term id: 1, type: "Term", name: "Authority", created_at: "2011-10-30 22:32:35", updated_at: "2011-10-30 22:32:35">
>> met.terms
Metum Load (0.3ms) SELECT `meta`.* FROM `meta` WHERE `meta`.`id` = 1 LIMIT 1
=> #<Term id: 1, type: "Term", name: "Authority", created_at: "2011-10-30 22:32:35", updated_at: "2011-10-30 22:32:35">
В этом случае Metting имеет только один термин, а не теги.Сгенерированные рельсом запросы не используют столбец «type» в «Metum», чтобы различать теги и термины.Любые идеи, как я могу исправить это так, чтобы в вышеуказанных вызовах возвращались только теги и термины?
спасибо.