如何Ruby代码此位被重构,以使其不太难看:如何干掉其他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号线可以在某种程度上DRYed起来。谢谢你的帮助!
这是我的模型:
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
对于重构问题,您应该使用http://codereview.stackexchange.com。 – 2013-02-28 19:08:25