具体来说,让我们假设我们有两个合理的模型:
TieDyeCentipede
, 其中 has_many :legs
Leg
,其中有一个 :color
属性。 成为
TieDyeCentipede
,没有两条腿的颜色是一样的。事实上,一条腿的颜色在中是独一无二的。全部 我们所有的腿的TieDyeCentipedes
.基于这种唯一性,我们想找到一个特定的
Centipede
通过特定颜色的腿——比方说 :deep_sky_blue
.我可以做这样的事情:
critter = Leg.find_by_color(:deep_sky_blue).tie_dye_centipede
但是,有没有
find_by_*
TieDyeCentipede
上的方法我也可以使用的类?
最佳答案
没有魔法:
TieDyeCentipede.joins(:legs).where(:legs => {:color => 'deep_sky_blue'}).first
一些魔法:
def self.find_by_leg_color(color)
TieDyeCentipede.joins(:legs).where(:legs => {:color => color}).first
end
关于ruby-on-rails - Rails 3 有 find_by 关联魔法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801513/