activerecord - 时间格式
Posted
技术标签:
【中文标题】activerecord - 时间格式【英文标题】:activerecord - Time format 【发布时间】: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 可以处理的时间格式,但我不知道该怎么做,而且看起来很简单,甚至没有人费心去写怎么做它。如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】:
【参考方案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
的对象,那没关系。
【讨论】:
以上是关于activerecord - 时间格式的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Active Record 查找具有重复数据的记录