我正在撞墙 - 我正在使用ActiveRecord中的各种范围做一些工作而有些则没有,我无法弄明白为什么。很想有人给我一个提示/解决方案。所有范围语句都在同一个Model - 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) }
以下失败并提供错误消息:时间#succ已过时;使用时间+ 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) }
范围语句的构造是相同的 - 除了每个语句中使用的列名。
我很欣赏我可能做错的任何见解。
答案 0 :(得分:0)
伙计 - 问题是程序中的堆栈 - 我正在追逐一个鬼,因为Rails没有报告错误的任何跟踪信息,我认为它在范围声明中。正如任何FYI - 我的最终范围声明如下:
scope :in_discovery, lambda{|dtCheck| active_records.where('DATE(?) BETWEEN crnt_discovery_start AND crnt_discovery_finish', dtCheck)}
像冠军一样工作。
问题最终出现在子视图中,我再次对DB2数据库中的datatyep TIMESTAMP字段进行了比较。由于它是一个我无法更改数据类型的遗留应用程序,因此我在视图中所要做的就是在字段声明的末尾添加“.to_date”。