【问题标题】:Rails3 Use of ActiveRecord ;scope failing with Time#succ is obsoleteRails3 使用 ActiveRecord ;范围因 Time#succ 失败已过时
【发布时间】:2012-08-23 21:56:38
【问题描述】:

我的头撞到了墙上——我在 ActiveRecord 中使用各种范围,有些工作,有些没有,我不知道为什么。希望有人给我一个提示/解决方案。所有范围陈述都在同一个模型 - PortfolioProject 中。全部调用如下:

PortfolioProject.<scope name>(Time.zone.now).order('sequence')

这个有效 - 每次都不会失败:

scope :in_discovery, lambda {|curTime| where('sequence > 0 AND ? BETWEEN crnt_discovery_start AND crnt_discovery_finish', curTime) }

以下失败并给出错误消息:Time#succ is obsolete;使用时间+1

scope :in_requirements, lambda {|curTime|  where('sequence > 0 AND ? BETWEEN crnt_requirements_start AND crnt_requirements_finish', curTime) }
scope :in_tech_design, lambda {|curTime|  where('sequence > 0 AND ? BETWEEN crnt_tech_dsgn_start AND crnt_tech_dsgn_finish', curTime) }
scope :in_development, lambda {|curTime|  where('sequence > 0 AND ? BETWEEN crnt_development_start AND crnt_development_finish', curTime) }
scope :in_testing, lambda {|curTime|  where('sequence > 0 AND ? BETWEEN crnt_testing_start AND crnt_testing_finish', curTime) }
scope :in_launch, lambda {|curTime|  where('sequence > 0 AND ? BETWEEN crnt_launch_start AND crnt_launch_finish', curTime) }

范围语句的构造是相同的 - 除了每个语句中使用的列名。

感谢您对我可能做错的任何见解。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 activerecord scope


    【解决方案1】:

    伙计们 - 问题在程序的堆栈中更靠后 - 我正在追逐一个幽灵,因为 Rails 没有报告任何带有错误的跟踪信息,我认为它在范围声明中。就像任何仅供参考一样 - 我的最终范围声明如下:

    scope :in_discovery, lambda{|dtCheck| active_records.where('DATE(?) BETWEEN crnt_discovery_start AND crnt_discovery_finish', dtCheck)}
    

    像冠军一样工作。

    问题最终出现在一个子视图中,在该子视图中我再次对 DB2 数据库中属于 datatyep TIMESTAMP 的字段进行比较。由于它是一个无法更改数据类型的旧版应用程序,因此我在视图中所要做的就是在字段声明的末尾添加“.to_date”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多