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