2012-09-04 42 views
1

這已經非常簡單了,但我正在試圖找到答案撞牆。我想使用下面顯示的實例方法找到最後更新的記錄。activerecord - 時間格式

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可以處理的時間格式,但我無法弄清楚如何去做,它似乎很容易,甚至沒有人甚至不知道如何去做。如果有人能指引我朝着正確的方向,我將不勝感激。

回答

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那麼也沒關係。