Rails分配表与第三列

时间:2011-06-29 08:51:58

标签: ruby-on-rails ruby-on-rails-3 rails-models

我目前在Rails 3中有一个分配表的模型,如下所示(当然还有销售和财务公司模型):

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

  belongs_to :sale
  belongs_to :financeCompany
end

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

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

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

遗憾的是,这不起作用,错误是financedBalance部分。我可以看到建立我的财务公司模型的唯一方法是使用

has_many :financedBalances, :through => :saleFinanceCompanies

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Rails对联接表的处理方式与您的想法略有不同。从DBA的角度来看,您的连接表非常好,但对于Rails,真正的连接表只有参考列。只要添加新列,Rails就会将连接表视为新实体。

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

所以,为了解决你的问题,你需要重命名你的表,比如说FinanceBalances。另外,让我们将financedBalance改为金额。

然后,在您的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模型中定义一个方法,并编写返回所需内容的查询。