这必须非常简单,但是我正试图找到答案而撞墙。我想使用下面显示的实例方法找到最后更新的记录。
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可以处理的时间格式,但我无法弄清楚如何做到这一点似乎很容易,甚至没有人打扰写如何做它。如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分: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
的对象,则无关紧要。