2011-12-25 51 views
1

数据库我不能从数据库中获得干净的结果,选择在Rails3中

module PagesHelper 
    def list 
     wishes = WishList.select("content").where("user_id = #{@user.id}")  
     wishes.each do |wish|             
      puts wish.fetch_hash             
     end                  
    end                   
end 

结果与用户ID为6:

[#<WishList content: "test3">, #<WishList content: "test4">, #<WishList content: "test5">] 

,但我想列表,如: TEST3, test4,test5没有洪水,我怎么能得到它?

回答

2

首先,永远不插入值到where。这可能导致SQL注入参数。例如,这是不好的:

WishList.select("content").where("user_id = #{@user.id}") 

这是OK:

WishList.select("content").where(:user_id => @user.id) 

这将自动逃避查询,它确实没有必要在在的@user.id部分此查询,但是想象一下,你在做这样的事情:

User.select("email, password").where("admin = #{params[:admin]}") 

那么任何人都可以通过在任何价值10他们想要。

所以。


无论如何,访问它通过关联:

wishes = @user.wishlist.select("content") 

然后卡尔拉兹洛建议:

wishes.map(&:content) 
1

相反的:

wishes.each do |wish|             
    puts wish.fetch_hash             
end 

务必:

wishes.map(&:content)