1

User モデルと Book モデルがあります。本はユーザーに属し、ユーザーは多くの本を持っています。

ビューでは、ユーザーがユーザー表示ビューで作成したすべての本を次のように表示しています

<% @user.books.each do |book| %>
  <%= book.id %> 
  <%= book.title %>
<% end %>

ただし、book.idユーザーごとだけでなく、データベース内のすべての本に固有の番号があります。この ID をユーザー固有のものにしたいので、データベースに 1,000 冊の本があり、ユーザーがそれらの本を 3 冊しか持っていない場合、ID は 1、2、3 として表示されます (476、239、105、等。)。

これはどのように行うことができますか?

4

2 に答える 2

1

いくつかのことができます...最速の方法は、ループの前にカウンターを含めてインクリメントすることです...本ごとに一意の番号が必要な場合...

ID が本当に必要な場合は、books テーブルに別のフィールドを追加し、モデルで計算して ID 番号を処理できます...

もう 1 つの方法は、user_books のような別のモデルを追加し、counter フィールドを含む関連付けを通じて has many を構築することです

それが役に立てば幸い。

于 2012-12-29T00:29:13.660 に答える
0

表示目的だけの場合は、次のようにカウンターを追加してみませんか。

<% count = 1 %>
<% @user.books.each do |book| %>
  <%= count %>
  <% count += 1 %>      
  <%= book.title %>
<% end %>

したがって、book.id の代わりに <%= count %> となります。

ひっくり返して最新のものから始めたい場合は、次のようにします。

<% count = @user.books.length %>
<% @user.books.each do |book| %>
  <%= count %>
  <% count -= 1 %>      
  <%= book.title %>
<% end %>
于 2012-12-29T00:31:35.933 に答える