如何在before_save方法中使用values_at?

时间:2013-08-22 04:11:39

标签: ruby-on-rails

我正在尝试将年份,月份和日期从:date传递到:start_time,但我收到以下错误:未定义的方法`values_at'。我想我的方法中没有正确的语法:

def set_start_time_date
  self.start_time = date.values_at( :year, :month, :day )
  return true
end
before_save :set_start_time_date

这样做的正确方法是什么?

修改:在我的迁移中,:date为t.date,:start_time为t.datetime

1 个答案:

答案 0 :(得分:0)

尝试:

def set_start_time_date
  self.start_time = DateTime.strptime("#{date.strftime} #{event_start.strftime('%H:%M:%S')} #{event_start.zone}", "%Y-%m-%d %H:%M:%S %Z")
  return true
end

<强>更新

如果您有DateTime对象,则可以创建DateTime而无需转换为字符串:

def set_start_time_date
  self.start_time = DateTime.new(date.year, date.month, date.day, event_start.hour, event_start.min, event_start.sec, event_start.zone)
  return true
end