如何重构这段 Ruby 代码以使其不那么难看:
def default_item_price(user)
if project.present?
if project.hourly_rate?
project.hourly_rate
elsif project.person.hourly_rate?
project.person.hourly_rate
elsif project.person.organisation && project.person.organisation.hourly_rate?
project.person.organisation.hourly_rate
else
user.preference.hourly_rate
end
else
user.preference.hourly_rate
end
end
我没有做过很多 Ruby 编程,我想知道最后 6 行是否可以以某种方式干掉。谢谢你的帮助!
这些是我的模型:
class User
has_many :people
end
class Person
belongs_to :user
has_many :projects
def real_hourly_rate
hourly_rate || organisation.real_hourly_rate
end
end
class Project
belongs_to :person
has_many :invoices
def real_hourly_rate
hourly_rate || person.real_hourly_rate
end
end
class Invoice
belongs_to :project
def default_item_price(user)
project.real_hourly_rate || user.preference.hourly_rate
end
end