我对RoR很新,我不确定我是否在问正确的问题。不过就在这里。
我有3个模型Policy,CommissionInvoice,Intermediary
中介 -
has_many :commission_invoices, foreign_key: :intm_no
CommissionInvoice -
belongs_to :policy, foreign_key: :policy_id
has_one :intermediary, foreign_key: :intm_no
政策 -
has_one :commission_invoice, foreign_key: :policy_id
has_one :intermediary, through: :commission_invoice, foreign_key: :intm_no
在我的中间模型中,我做了一个这样的方法:
def credit_term
if type == "BR"
90
else
30
end
end
然后在我的Policy模型中,我创建了一个这样的方法:
def due_date
effectivity + intermediary.credit_term if commission_invoice
end
有效性是列名。
对于我的PoliciesController:
def due_today
@policies = Policy.order(sort_column + " " + sort_direction).includes([:commission_invoice => :intermediary]).page(params[:page]).per(10)
end
现在,我的问题是,如何使用计算方法 due_date 过滤来自控制器的查询数据(或者如果您可以建议任何其他解决方案)到今天的日期?因为从一开始就显示所有记录。我希望我的问题很清楚。提前致谢。 :)
答案 0 :(得分:0)
您可以使用数组选择方法进行过滤:https://ruby-doc.org/core-2.2.0/Array.html#method-i-select
例如:
def due_today
@policies = Policy.order(sort_column + " " + sort_direction).includes([:commission_invoice => :intermediary]).page(params[:page]).per(10)
@policies = @policies.select {|p| p.due_date.present? && p.due_date <= Date.today}
end
我添加了对due_date.present?
的检查,因为如果commission_invoice
为假,due_date
将返回nil
。