活动记录 - has_one模型的条件?

时间:2012-06-23 04:44:54

标签: ruby-on-rails ruby-on-rails-3 activerecord

如果我有以下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

1 个答案:

答案 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