如何从两个表中正确收集信息并在轨道中的一个控制器中使用它们?

时间:2012-10-08 07:45:58

标签: ruby-on-rails

我有两个名为usersbilling的表。在users我有通常的信息,而在billing(包含user_id字段供参考)我会按月为每个用户提供余额。我的问题来自于我想列出每月余额。在每月余额页面上,我想显示用户的名称,月份的balanace和其他misc信息,但billing表仅保存用户的ID。

起初我试过

@mondetail = Billings.find_by_date(201204) #April's billing period
@customer = Users.find_by_id(mondetail.user_id)

适用于一个用户,但是当我想要显示来自多个用户的两个表的信息时,我应该怎么做?或者我最好将user_name字段添加到billing表中?

1 个答案:

答案 0 :(得分:1)

您不需要在控制器中找到用户的信息。您可以从Billing模型中获取它。 (奇怪的是模型是复数的)

# controller
@mondetail = Billings.includes(:user).find_by_date(201204)


# view
<% @mondetail.each |mondetail| %>
 <%= mondetail.user.name %><br />
 <%= number_to_currency mondetail.balance %>
<% end %>

它会起作用而没有includes,但你应该避免N + 1 queries问题