Ruby on rails Rails:如何在数据库中查找具有条件的记录

Ruby on rails Rails:如何在数据库中查找具有条件的记录,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我使用的是rails 3.2,我想让它更具动态性。我只想显示活动工单(取决于工单创建的日期) 类作业=DATE(?),30.days.ago)} 结束 我希望能够向我的类型表中添加一列,其中包含编号,并基于该编号进行查询 我添加了我的专栏,我正在寻找类似的东西 class Job < ActiveRecord::Base belongs_to :type scope :is_active, lambda { where("created_at >= DATE(?)"

我使用的是rails 3.2,我想让它更具动态性。我只想显示活动工单(取决于工单创建的日期)

类作业=DATE(?),30.days.ago)}
结束
我希望能够向我的类型表中添加一列,其中包含编号,并基于该编号进行查询

我添加了我的专栏,我正在寻找类似的东西

class Job < ActiveRecord::Base
    belongs_to :type
    scope :is_active, lambda { where("created_at >= DATE(?)", type.numberofdays) }
end
类作业=DATE(?),键入.numberofdays)}
结束

我不确定要查找什么,我已经阅读了有关活动记录的文档。如果您需要更多信息,请告诉我。

我认为您不能仅对单个整数值使用
DATE()
。你在使用什么数据库?要查找属于过去的
类型.numberofdays
的所有
作业
,可以使用以下具有更新范围的作业

class Job < ActiveRecord::Base
    belongs_to :type
    scope :is_active, lambda { joins(:type).where("created_at >= :newer_than_date", newer_than_date: Date.today - type.numberofdays) }
end

我想你需要多描述一下什么不起作用。你得到了一个错误,记录不是正确的吗?你是对的,在我最初的例子中,我使用了这个作用域:is_active,lambda{where(“created_at>=DATE(?),Rails.application.config.number_of_days_for_inactive.days.ago)}在你的代码中,我得到了未定义的局部变量或方法'type',你是对的,
类型将是未定义的。由于这是一个
范围
,我认为更好的方法是为您的
工作
传入
类型
,如上面的更新所示。你觉得怎么样?谢谢你这么快回答。你能告诉我你的最新情况以便我能更好地理解吗?非常感谢更新,您将要做的是
作业。按类型(type)
活动,其中
类型
类型
的一个实例。这有意义吗?我总是显示所有的作业,除了达到过期日期的作业。在查询之前,我如何知道当前类型?
class Job < ActiveRecord::Base
    belongs_to :type
    scope :is_active, lambda { joins(:type).where("created_at >= :newer_than_date", newer_than_date: Date.today - type.numberofdays) }
end
scope :active_by_type, lambda { |type| joins(:type).where("created_at >= :newer_than_date", newer_than_date: Date.today - type.numberofdays) }