我有這個類在Ruby on Rails應用程序Ruby類中的方法的參數
class ChartData
def self.user_logs_by_day(logs)
days_with_hours = Hash.new{|h, k| h[k] = Hash.new(&h.default_proc)}
logs.each do |log|
days_with_hours[log.user.name][log.log_date] = log.total_hours
end
days_with_hours
end
def self.project_logs_by_day(logs)
days_with_hours = Hash.new{|h, k| h[k] = Hash.new(&h.default_proc)}
logs.each do |log|
if !log.project.nil?
days_with_hours[log.project.name][log.log_date] = log.total_hours
else
days_with_hours[@default][log.log_date] = log.total_hours
end
end
days_with_hours
end
end
我想這兩種方法制作成一個像這樣的,因爲我要使用很多模型這種方法。
class ChartData
def self.logs_by_day(logs, klass)
days_with_hours = Hash.new{|h, k| h[k] = Hash.new(&h.default_proc)}
logs.each do |log|
if !log.klass.nil?
days_with_hours[log.klass.name][log.log_date] = log.total_hours
else
days_with_hours[@default][log.log_date] = log.total_hours
end
end
days_with_hours
end
end
我想要的類或模型傳遞到方法這樣
ChartData.logs_by_day(logs, Project)
我如何處理模型參數的項目,所以它會是在日誌中的實例方法?
一個相當笨拙的嘗試
1.9.3p125 :026 > Project.name.downcase
=> "project"
更好嗎?歡迎其他重構建議
'Project.name.downcase' - 這樣你就會有一個字符串,而不是一個實例方法。 –
我知道這就是爲什麼它是「一個相當笨拙的嘗試」; ) –