Ruby 如何使用ActiveRecord同时添加日期列和整数列?

Ruby 如何使用ActiveRecord同时添加日期列和整数列?,ruby,activerecord,ruby-on-rails-3.2,Ruby,Activerecord,Ruby On Rails 3.2,我在一个数据库中有两列,一列名为purchase_date,另一列名为lifetime。我试图过滤结果,以便在给定当前纳税年度时,仅显示未超过其使用寿命的资产 我试过了 Asset.where("? < DATE_ADD(purchase_date,INTERVAL lifetime YEAR) AND purchase_date >= ?",Date.new(2012,1,1),Date.new(2012,1,1)) Asset.where(“?=?”,DATE.new(201

我在一个数据库中有两列,一列名为purchase_date,另一列名为lifetime。我试图过滤结果,以便在给定当前纳税年度时,仅显示未超过其使用寿命的资产

我试过了

Asset.where("? < DATE_ADD(purchase_date,INTERVAL lifetime YEAR) AND  purchase_date >= ?",Date.new(2012,1,1),Date.new(2012,1,1))
Asset.where(“?=?”,DATE.new(2012,1,1),DATE.new(2012,1,1))
但是,后来我意识到,如果MySQL能够正常工作,那么它将与MySQL绑定,如果我的全部应用程序能够正常工作,这是很好的。但是,我想要一些与数据库无关的东西,特别是因为这是针对Sqlite进行测试的。带有此查询的Sqlite给了我以下异常:

ActiveRecord::语句无效:SQLite3::SQLException:接近生存期

如何以与数据库无关的方式向sql语句中的日期列添加整数列

更新


我玩过斯奎尔,但我认为它不起作用。有可能检测到适配器并以此为基础

为什么不在字段中添加一个
:expires\u?您可以设置:before_save hook,以确保它自动与
:life
字段保持同步

before_save :set_expiration_date

scope :not_expired, where("expires_at > ?", DateTime.now)

def set_expiration_date
  return unless purchase_date.changed? || lifetime.changed?
  self.expires_at = purchase_date + lifetime.years
end

为什么不在
字段中添加一个
:expires\u?您可以设置:before_save hook,以确保它自动与
:life
字段保持同步

before_save :set_expiration_date

scope :not_expired, where("expires_at > ?", DateTime.now)

def set_expiration_date
  return unless purchase_date.changed? || lifetime.changed?
  self.expires_at = purchase_date + lifetime.years
end

也许斯奎尔能帮你,但我不是阿雷尔afraid@user1737909谢谢你的意见。我正在尝试知道,但由于某些原因,我得到了一个错误的参数数量异常0为1.0为1异常消失。我认为这要么是因为我必须在我的虚拟应用程序中生成一个初始值设定项,要么是因为我必须在我的gempec中添加一个开发依赖项。注意:这是一个rails引擎。也许squeel可以帮助你,但我不是Arelafraid@user1737909谢谢你的意见。我正在尝试知道,但由于某些原因,我得到了一个错误的参数数量异常0为1.0为1异常消失。我认为这要么是因为我必须在我的虚拟应用程序中生成一个初始值设定项,要么是因为我必须在我的gempec中添加一个开发依赖项。注意:这是一个rails引擎。