2011-12-25 70 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)