【发布时间】:2016-09-11 05:10:13
【问题描述】:
在我的 rails 应用程序中,我在 Kid 模型中定义了基于 Kids DB 中的字段的计算。方法如下:
def flip_date
self.dob.advance(months: 10)
end
我想在我的控制器中使用它,因为我有一个方法,我定义如下:
new_kids = Kid.where(discharge_date: nil).where('flip_date > ?', Date.current.advance(year: 1).beginning_of_year)
但是我不断收到以下错误:
SQLite3::SQLException: no such column: flip_date: SELECT "kids".* FROM "kids" WHERE "kids"."discharge_date" IS NULL AND (flip_date < '2017-01-01')
关于如何完成这项工作的任何想法?感谢所有帮助!
【问题讨论】:
-
我认为您将不得不使用
scope,请参阅documentation 中的语法和示例 -
@ImranAli 我查看了文档,但我仍然认为它不会解决问题,因为仍然有一个查询发生在
scope定义中,但flip_date不是列 -
@AlvinLau 你想通过哪里查询来实现什么? where 方法将创建 SQL 语句,您将无法在 sql 中使用模型方法。
标签: ruby-on-rails activerecord activemodel