2012-06-23 35 views
0

如果我有以下HAS_ONE設置:活動記錄 - has_one模型的條件?

class Account 
has_one :user 

我怎麼可以這樣做@ account.user.where(:可見=>真)

或者更具體地說,我怎麼就打電話條件與has_many類似的方式,has_one關係?我目前正在用戶上使用一個看起來很愚蠢的作用域?

def is_visible? 
    if self.visible 
    return self 
    else 
    return false 
end 
+0

我不確定我是否理解。你想獲得用戶可見的帳戶列表? – x1a4

+0

迪斯科。對,就是那樣。但我似乎無法調用@ account.user.where(:visible => true),我不確定原因。 – Galaxy

+0

你是否希望將這個條件應用到所有的關聯中? – Nobita

回答

1

您需要使用連接來獲取可見用戶帳戶的列表,但是一旦您完成查詢,它不會太難。試試這個:

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

你也可以很容易地將它封裝到一個範圍內。

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

@accounts = Account.with_visible_user