activerecord嵌套条件

时间:2010-09-20 05:14:59

标签: ruby-on-rails activerecord

这是我提出的上一个问题的后续跟进。我无法获得具有嵌套模型的各种条件的查询。

user has_one avatar
user has_one profile
avatar belongs_to user
profile belongs_to user

我实际上能够让这个工作......

Avatar.find(:all, :include => {:user => :profile}, :conditions => {:users => {:profiles => {:description => 'foo'}}})

但是如果profile.description不是NULL,我希望它返回一个头像。

Avatar.find(:all, :include => {:user => :profile}, :conditions => {:users => {:profiles => "profiles.description IS NOT NULL"}})

因此,当我更改查询以遵循SQL语法而不是轨道语法时,我收到错误“No such column user.profiles”

似乎无论我使用什么语句“profiles.description IS NOT NULL”,错误都是一样的。它必须是那种结构的其他东西。

1 个答案:

答案 0 :(得分:1)

试试这个:

Avatar.all(:include => {:user => :profile}, 
  :conditions => ["profiles.description IS NOT NULL"])

您必须使用conditions数组进行此类查询。