Выбрать из базы данных в rails3 - PullRequest
1 голос
/ 25 декабря 2011

Я не могу получить чистые результаты из базы данных,

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

результаты для пользователя с идентификатором 6:

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

, но я хочу получить список вроде: test3, test4,test5 без флуд, как мне его получить?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

Во-первых, никогда не интерполирует значения в where.Это может привести к SQL-инъекции параметров.Например, это плохо:

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

И это нормально:

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

Это автоматически экранирует часть запроса @user.id, котораяв этом запросе нет нужды в in, но представьте, что вы делаете что-то вроде этого:

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

Тогда любой может пройти через любое значение в params[:admin], какое захочет.

Итак.


В любом случае, получите доступ к нему через ассоциацию:

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

Тогда, как рекомендовал Карл Лазло:

wishes.map(&:content)
1 голос
/ 25 декабря 2011

Вместо:

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

До:

wishes.map(&:content)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...