我正在尝试查找user的过期invoices
class User < ActiveRecord::Base
def overdue_invoices
invoices.where("overdue = ?", true)
end
end
class Invoice < ActiveRecord::Base
def overdue
balance > 0 && Date.today > due_date
end
end问题似乎是overdue是Invoice模型上的一个方法,而不是数据库列。
我怎么才能检索这些记录呢?这是否有意义,或者将这些true和false值存储在数据库中会更好?
发布于 2013-02-17 23:16:26
您应该为Invoice上的overdue创建等效的类方法或scope
class Invoice < ActiveRecord::Base
def self.overdue
where('balance > 0').where('? > due_date', Date.today)
end
end然后您可以在发票关系上调用overdue:
class User < ActiveRecord::Base
def overdue_invoices
invoices.overdue
end
end请注意,我假设due_date是一个数据库列,如果不是,则不能使用此方法-但是,您可以将其替换为SQL,以便从列中的数据计算到期日。
https://stackoverflow.com/questions/14922183
复制相似问题