2012-08-10 118 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