0

と という名前の 2 つのテーブルがusersありbillingます。にusersは通常の情報がありますが、billing(参照用のフィールドが含まれuser_idています) には、各ユーザーの月ごとの残高などがあります。私の問題は、毎月の残高を一覧表示するときに発生します。毎月の残高ページで、ユーザーの名前、その月の残高、その他の情報を表示したいのですが、billingテーブルにはユーザーの ID しか保持されていません。

最初に私は試しました

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

これは 1 人のユーザーには問題なく機能しますが、複数のユーザーがいる両方のテーブルの情報を表示したい場合はどうすればよいですか? それとも、テーブルにuser_nameフィールドを追加するのが最善でしょうか?billing

4

1 に答える 1

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 %>

それは機能しますが、 N + 1クエリの問題includesは避ける必要があります

于 2012-10-08T08:00:09.220 に答える