从rails3中的数据库中选择

时间:2011-12-25 00:36:31

标签: ruby-on-rails-3

我无法从数据库中获得干净的结果,

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 个答案:

答案 0 :(得分:2)

首先,永远不会将值插入where 。这可能导致SQL注入参数。例如,这很糟糕:

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

这没关系:

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

这将自动转义查询的@user.id部分,在此查询中实际上并不需要,但想象您正在执行以下操作:

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

然后任何人都可以通过他们想要的params[:admin]中的任何值。

所以


无论如何,通过协会访问它:

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

然后正如Carl Lazlo所建议的那样:

wishes.map(&:content)

答案 1 :(得分:1)

而不是:

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

执行:

wishes.map(&:content)