如果我有以下has_one设置:
class Account
has_one :user
我怎样才能做@ account.user.where(:visible => true)
之类的事情或者更具体地说,如何以与has_many类似的方式调用has_one关系上的条件?我目前正在使用一个看似愚蠢的用户范围?
def is_visible?
if self.visible
return self
else
return false
end
答案 0 :(得分:1)
您需要使用联接来获取可见用户帐户的列表,但是一旦您查询了查询,就不会太难。试试这个:
@accounts = Account.joins(:user).where(:users => {:visible => true})
您也可以轻松地将其封装到范围内。
scope :with_visible_user, joins(:user).where(:users => {:visible => true})
@accounts = Account.with_visible_user