0

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

1 回答 1

1

您需要使用连接来获取可见用户帐户的列表,但是一旦您了解了查询,这并不难。试试这个:

@accounts = Account.joins(:user).where(:users => {:visible => true})

您还可以轻松地将其封装到范围中。

scope :with_visible_user, joins(:user).where(:users => {:visible => true})

@accounts = Account.with_visible_user
于 2012-06-23T05:27:27.313 回答