0

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

class SaleFinanceCompany < ActiveRecord::Base
  attr_accessible :sale_id, :financeCompany_id, :financedBalance

  belongs_to :sale
  belongs_to :financeCompany
end

我的问题很简单:如何设置 sale/financeCompany 模型,以便我可以访问相关的 funddBalance?

例如,在我看来,我想拥有:

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

不幸的是,这不起作用,错误是财务平衡部分。我认为建立我的金融公司模型的唯一方法是

has_many :financedBalances, :through => :saleFinanceCompanies

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

有什么建议么?

4

1 回答 1

0

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

(就个人而言,起初我对此感到沮丧,但我很快就知道这没什么大不了的)

因此,要解决您的问题,您需要重命名您的表,例如 FinanceBalances。另外,让我们将财务余额更改为金额。

然后,在您的 Sale.rb 文件中放置您的关联,如下所示:

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

对 FinanceCompany 执行相同的操作。

您的代码将如下所示:

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

如果你真的很想financeCompany.financedBalance工作,你可以在你的 financeCompany 模型中定义一个方法并编写返回你想要的查询。

于 2011-07-04T09:23:03.610 回答