2013-07-23 22 views
1

我有,只是通過各種模型迭代,打印出來的模型屬性的方法:導軌 - 通過記錄迭代witin的方法

def self.get_attributes(options = {}) 
    options[:model_name].find(:all, :conditions => {:generated_at => options[:start_date]..options[:end_date]}).each do |p| 
    puts p.options[:col_name] 
end 

調用的方法:

start_date = DateTime.strptime(params[:start_date], '%m/%d/%Y').beginning_of_day.strftime("%Y-%m-%d %H:%M:%S") 
end_date = DateTime.strptime(params[:end_date], '%m/%d/%Y').end_of_day.strftime("%Y-%m-%d %H:%M:%S") 
get_attributes({:model_name => Revenue, :col_name => "revenue", :start_date => start_date, :end_date => end_date}) 

我曾嘗試作爲字符串和變量傳遞列名稱。當作爲變量傳遞時,我得到一個異常。如上所述,我得到一個undefined method 'col_name'例外。如何插入上述方法中的列名稱?

回答

1

您將代表列/方法名作爲一個符號(例如:revenue)中並用__send__調用它如:

p.__send__(options[:col_name])