如何检查表中是否存在列?

时间:2014-10-21 09:13:31

标签: ruby-on-rails ruby rails-activerecord

我正在使用rails 2.3.2

我有一个参数,其中我有一个表的字段名称。我想知道该字段是否存在于表中,以防止sql注入。

User.find(:all, :group => params[:group], :conditions => { :admin => false })

我想确保在实际执行上述查询之前,params [:group]是表中的一个字段。

找出给定字段是表的有效字段的方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以使用has_attribute?

user = User.new
user.has_attribute?(params[:group])

答案 1 :(得分:3)

对于您可以使用的实例:

user.has_attribute?(params[:group])

对于课程:

User.column_names.include?(params[:group])

但ActiveRecord的查询构建方法如:wheregrouporder等,只要您不使用raw,就可以安全地防止SQL注入SQL查询。 我不担心。