【发布时间】:2012-02-03 20:26:42
【问题描述】:
我有一个应用程序,企业可以在该应用程序中报税和申请延期纳税。 (扩展是说“我需要更多时间来归档”的请求。)
我有以下关系:
Business has_many :tax_filings (one per year)
TaxFiling belongs_to :business
Business has_many :tax_extensions (one per year)
TaxExtension belongs_to :business
当我显示税务申报清单时,我希望每个申报都显示是否有相应的扩展名。但是如果没有 N+1 查询,我不确定如何做到这一点。
现在我在 TaxFiling 上有这个方法:
def extension
TaxExtension.where(:business_id => business_id, :year => year).first
end
所以每次我调用TaxFiling#extension,它都会进行另一个数据库查询。
我在business_id 和year 上为TaxFiling 添加了joins 扩展的范围,但我不确定如何让TaxFiling#extension 在两个模型之间没有声明关系的情况下使用它。
我该怎么做?
【问题讨论】:
-
也许很明显,有人会用
joins查询列表和扩展名的企业,然后从那里开始。但不幸的是,列表和扩展可能属于不同的用户,他们都不能拥有该业务。所以这在这里行不通。 -
我不确定,用户与这些有什么关系?
-
@SergioTulentsev - 是的,也许这比有用更令人困惑。我只是想解释为什么我不这样做
business.tax_filing和business.tax_extension而是必须从归档遍历到扩展名是有一个特定于应用程序的原因。
标签: ruby-on-rails activerecord ruby-on-rails-3.1