2010-05-18 8 views
0

У меня есть модель, как это:Условный отношение

Stem 
    -id 
    -etc 

И тогда я

Stemrelation 
    -stem_id 
    -related_stem_id 
    -active 

я могу получить связанные стебли с следующими соотношениями

class Stem < ActiveRecord::Base 
    has_many :stemrelations 
    has_many :related_stems, :through => :stemrelations 
end 

class Stemrelation < ActiveRecord::Base 
    belongs_to :stem 
    belongs_to :related_stem, :class_name => "Stem", :foreign_key => "related_stem_id" 
end 

Но теперь я бы хотел только получить активные отношения.

Я попытался добавив в модели Stem:

has_many :active_related, :through => :stemrelations, :source => :related_stem, :conditions => {:active => true} 

, но это дает мне ошибку еще потому, что пытается проверить активный флаг на ножке модели вместо stemrelation. Что мне здесь менять?

Спасибо!

ответ

1

Вы уверены, что вам нужна условная связь. Может быть named_scope подходит здесь:

class Stem < ActiveRecord::Base 
    has_many :stemrelations 
    has_many :related_stems, :through => :stemrelations 

    named_scope :active, :conditions => {:active => true} 
end 

Вы можете использовать его как это:

Stem.first.related_stems.active 
0

для условий, вы должны использовать SQL синтаксис.

Смежные вопросы