rails将多列查询转换为strftime(“%H”)... NoMethodError:未定义的方法`strftime'

时间:2014-04-14 18:59:02

标签: ruby-on-rails rails-activerecord strftime

我正试图从08:00:00 UTC to 8:00转换所有时间 通过使用strftime

以下是包含字段的个人资料模型。

class Profile < ActiveRecord::Base
  attr_accessible :sun, :mon, :wed, :tue, :thu, :fri, :sat
end

这是查询。

Profile.select('mon, tue, wed, thu, fri, sat, sun').where('usermodel_id = ?', 3).strftime('%H:%M')

错误:

NoMethodError: undefined method `strftime'

请您帮我转换格式:就像这样 太阳:9:00,周一:9:00等

我真的需要一些帮助,请

1 个答案:

答案 0 :(得分:2)

您正在针对活动记录集合运行strftime方法,但该方法将针对Ruby Time对象运行。你必须迭代集合,提取时间,然后你可以在它们上面调用strftime

例如:

profile_collection = Profile.select('mon, tue, wed, thu, fri, sat, sun').where('usermodel_id = ?', 3)

time_strings = profile_collection.map do |profile|
  %w(mon tue wed thu fri sat sun).map do |field|
    profile.send(field)
  end.map { |field| field.strftime('%H:%M') if field }.compact
end

它的作用:提取所有时间字段,然后对每个字段应用strftime方法;返回的数组将包含每个配置文件的数组,该数组又包含每天的时间字符串。