2012-08-10 120 views
0

我想獲得所有microposts where'something'= true。Ruby on rails - SQL方法的地方

此代碼工作正常

class UsersController < ApplicationController 
    . 
    . 
    . 
    def show 
    @user = User.find(params[:id]) 
    @microposts = @user.microposts 
    @titre = @user.nom 
    end 
end 

但是,當我試圖讓一個地方的SQL方法驗證碼不起作用。

class UsersController < ApplicationController 
     . 
     . 
     . 
     def show 
     @user = User.find(params[:id]) 
     @microposts = @user.microposts.where("something = 'true'") 
     @titre = @user.nom 
     end 
    end 

有什麼想法嗎?

+0

http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – gabrielhilal 2012-08-10 14:42:56

+0

問題可能是某件事是布爾而不是字符串。 – Mischa 2012-08-10 14:45:55

回答

2

這樣寫:

Micropost.where(user_id: params[:id], something: true) 
+0

是的,但在我的用戶模型:「has_many:microposts」將是無用的呢? – user1560922 2012-08-10 14:45:31

+0

有什麼區別?也許它會在別處需要。 – Michael 2012-08-10 14:48:32

+0

更改爲'something:true'是一個很好的建議,但沒有理由不使用'@ user.microposts'。 – Mischa 2012-08-10 14:48:58

4
def show 
    @user = User.find(params[:id]) 
    @microposts = @user.microposts.where(something: true) 
    @titre = @user.nom 
end 

對縮小查詢範圍的詳細信息,請參閱herehere

+0

謝謝隊友!這個對我有用 ! – user1560922 2012-08-10 14:56:45

+0

@ user1560922 - 如果問題解決了,請接受答案。謝謝 – gabrielhilal 2012-08-19 22:36:05