如果我这样做:
User.where(....).order("#{params[:order]} #{params[:dir]}")
如果不是,那么为了辩论的缘故,说我想偏执并确保符号 :order 和 :dir 的值在一个范围内,我该怎么做?
假设我创建了一个允许的安全值数组:
safe_order = %[:updated_at :created_at]
确保 params[:order]
为 nil
或包含 safe_order 数组中的值之一的 ruby 方法是什么?
最佳答案
看看http://railscasts.com/episodes/228-sortable-table-columns
具体一些检查参数或返回默认值的小方法:
def index
@products = Product.order(sort_column + " " + sort_direction)
end
# ...
private
def sort_column
Product.column_names.include?(params[:sort]) ? params[:sort] : "name"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end
关于ruby-on-rails - 在我的订单子(monad)句中传递参数是否让我可以选择进行 sql 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6740878/