我这样做:
User.where(....).order("#{params[:order]} #{params[:dir]}")
如果没有,那么为了论证的缘故,假设我想要偏执,并确保符号:order和:dir的值在一个范围内,我怎么能做到这一点?
假设我创建了一个允许的安全值数组:
safe_order = %[:updated_at :created_at]
确保params[:order]
是nil
或包含safe_order数组中的1个值的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