Ruby on rails 重构rails模型以从条件中删除字符串文本

Ruby on rails 重构rails模型以从条件中删除字符串文本,ruby-on-rails,ruby,ruby-on-rails-4,refactoring,Ruby On Rails,Ruby,Ruby On Rails 4,Refactoring,每次启动服务器时,我都会收到一条警告,指出我的条件中有字符串文字。这意味着什么?我如何改进我的代码以修复此问题并停止收到警告 def partner_cars if self.role == 'Garage Employee' || self.role == 'Garage Manager' self.cars elsif self.role == 'Company Employee' || 'Company Manager' self.company

每次启动服务器时,我都会收到一条警告,指出我的条件中有字符串文字。这意味着什么?我如何改进我的代码以修复此问题并停止收到警告

  def partner_cars
    if self.role == 'Garage Employee' || self.role == 'Garage Manager'
      self.cars
    elsif self.role == 'Company Employee' || 'Company Manager'
      self.company.cars
    else
      nil
    end
  end

  def partner_users
    if self.role == 'Garage Employee' || self.role == 'Garage Manager'
      allowed_users = self.users
    elsif self.role == 'Company Employee' || 'Company Manager'
      allowed_users = self.company.users
    else
      allowed_users = nil
    end
    allowed_users.uniq
  end

任何关于如何重构此代码的帮助都将不胜感激,谢谢

在不了解数据结构的情况下,很难提出重构方法

def partner_cars
  if garage_roles.include?(self.role)
    ...some code
  elsif employee_roles.include?(self.role)
    ..some code
  end
end

private
def garage_roles
  ['Garage Employee', 'Garage Manager']
end
更好的做法是在您的角色模型中设置这些方法

class Role
  def works_for_garage?
    title == 'Garage Manager' || 'Garage Employee'
  end
end

错误来自行
elsif self.role==“公司员工”| |“公司经理”
。相反,它应该是
elsif self.role==“公司员工”| self.role==“公司经理”

但是,我会重构您的代码,以使用如下
case
语句:

def partner_cars
  case role
    when 'Garage Employee', 'Garage Manager' then cars
    when 'Company Employee', 'Company Manager' then company.cars
  end
end

def partner_users
  allowed_users =
    case role
      when 'Garage Employee', 'Garage Manager' then users
      when 'Company Employee', 'Company Manager' then company.users
    end
  allowed_users.try(:uniq)
end