第三列的Rails分配表



我目前在Rails3中有一个分配表的模型,如下所示(当然还有sale和financeCompany模型):

class SaleFinanceCompany < ActiveRecord::Base
  attr_accessible :sale_id, :financeCompany_id, :financedBalance
  belongs_to :sale
  belongs_to :financeCompany
end

我的问题很简单:我如何设置销售/财务公司模型,以便访问相关的财务余额?

例如,在我看来,我希望拥有:

<% for financeCo in sale.financeCompanies %>
    <%= "£" + financeCo.financedBalance + " from "%>
    <%= financeCo.name %>
<% end %>

不幸的是,这不起作用,错误是财务平衡部分。我能看到的建立我的金融公司模式的唯一方法是使用

has_many :financedBalances, :through => :saleFinanceCompanies

但这会为每次销售给我几个财务余额,但我需要一个(每个财务余额都与分配表中的销售和财务公司挂钩,所以当我应该能够做sale.financeCompany.financedBalance时,做sale.financedBalances.where etc.似乎没有必要)。

有什么建议吗?

Rails对待联接表的方式与您想象的有所不同。从DBA的角度来看,联接表非常好,但对于Rails来说,真正的联接表只有引用列。一旦添加了一个新列,Rails就喜欢将联接表视为一个新实体。

(就我个人而言,一开始我对此感到沮丧,但我很快就明白了这没什么大不了的)

因此,为了解决您的问题,您需要重命名您的表,比如FinanceBalances。此外,让我们将financedBalance更改为amount。

然后,在你的Sale.rb文件中,把你的关联这样放:

has_many :financeBalances
has_many :financeCompanies, :through => :financeBalances

财务公司也要这样做。

你的代码看起来像:

<% for financeBalance in sale.financeBalances %>
  <%= "£" + financeBalance.amount + " from " %>
  <%= financeBalance.financeCompany.name %>
<% end %>

如果您真的想让financeCompany.financedBalance工作,可以在financeCompany模型中定义一个方法,并编写返回所需内容的查询。

相关内容

  • 没有找到相关文章

最新更新