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



我有两个名为usersbilling的表。在users中,我有通常的信息,而在billing(包含user_id字段以供参考)中,我为每个用户提供了按月余额之类的信息。我的问题来自于我想列出每月余额的时间。在每月余额页面上,我想显示用户的姓名、当月余额和其他杂项信息,但billing表只包含用户的id。

起初我尝试了

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

这对一个用户来说很好,但当我想向多个用户显示两个表中的信息时,我应该如何处理?还是最好在billing表中添加一个user_name字段?

您不需要在控制器中查找用户信息。您可以从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查询问题

最新更新