Ответ 1
Да, да. Только второй опасен.
В Rails, когда я хочу найти заданное пользователем значение и избежать SQL-инъекции (escape-апострофы и т.п.), я могу сделать что-то вроде этого:
Post.all(:conditions => ['title = ?', params[:title]])
Я знаю, что небезопасный способ сделать это (возможная инъекция SQL) таков:
Post.all(:conditions => "title = #{params[:title]}")
Мой вопрос в том, предотвращает ли SQL-инъекцию следующий метод или нет?
Post.all(:conditions => {:title => params[:title]})
Да, да. Только второй опасен.
Один хорошая ссылка из руководства RoR.
+1 @fphilipe и @yuval Проверьте это 5-минутное видео из railscast, и этот из направляющие рельсов