我有一个名为'index'的用户控制器和方法,用于列出用户。并且在视图中有一个过滤选项(状态挂起,活动,已删除)。我编写了代码并且工作正常。但我需要知道我写的代码是否正确,或者是任何简单的代码编写方法。这是验证控制器中状态的正确方法(验证查询字符串状态是否包含在一组状态中)。请帮忙
我使用了以下代码:
class UsersController < ApplicationController
def index
@filter_field = ''
if ((not params[:status].nil?) && ['pending', 'active', 'deleted'].include?(params[:status]))
@filter_field = params[:status]
end
@users = User.select_all(@filter_field)
end
end
class User < ActiveRecord::Base
def self.select_all filter
if filter.empty?
User.find(:all)
else
User.find(:all, :conditions => ['status = ?', filter]))
end
end
end
答案 0 :(得分:1)
你可以这样做:
def index
filter = %w(pending active deleted).include?(params[:status]) ? params[:status] : ''
@users = User.select_all(filter)
end
它使检查更容易理解+不需要实例变量吗?
顺便说一句,我觉得:['pending', 'active', 'deleted']
应该通过一种方法给出,以避免魔术数组