【问题标题】:activerecord - Time formatactiverecord - 时间格式
【发布时间】:2012-09-04 02:50:25
【问题描述】:

这必须非常简单,但我正在努力寻找答案。我想使用下图的实例方法查找最后更新的记录。

class Subject < ActiveRecord::Base
  has_many :assignments, :dependent => :destroy

  def get_last_assignment_date 
    @last_date = self.assignments.select("date_assigned").last
    @last_day = @last_date.wday
  end

我的作业模型如下所示:

create_table "assignments", :force => true do |t|
t.date     "date_assigned"
<snip>

但 Rails 为 get_last_assignment_date 返回以下错误:

undefined method `wday' for #<Assignment date_assigned: "2012-08-30">

我需要将活动记录返回的值转换为 Ruby 可以处理的时间格式,但我不知道该怎么做,而且看起来很简单,甚至没有人费心去写怎么做它。如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    这个:

    self.assignments.select("date_assigned").last
    

    返回 Assigment 对象,而不是 Time 对象。

    所以,而不是:

    @last_day = @last_date.wday
    

    你必须做的:

    @last_day = @last_date.date_assigned.wday
    

    您可能知道这一点,但以防万一:select("date_assigned").last 不会给您最新日期。你必须使用order:

    self.assignments.order(:date_assigned).last
    

    当然,如果最近创建的对象也是具有最新date_assigned 的对象,那没关系。

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 2015-03-07
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      相关资源
      最近更新 更多