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、 ETC。)。

如何才能做到这一点?

4

2 回答 2

1

你可以做几件事......最快的方法是在循环之前包含一个计数器并增加它......如果你只需要每本书的唯一数字......

如果你真的需要 ids,你可以在你的 books 表中添加一个单独的字段,并通过在你的模型中计算它们来处理 id 数字......

另一种方法是添加另一个模型,例如 user_books 并构建一个包含 counter 字段的关联,查看http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

希望能帮助到你。

于 2012-12-29T00:29:13.660 回答
0

好吧,如果只是为了显示目的,为什么不像这样添加一个计数器:

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

因此,您将拥有 <%= count %> 而不是 book.id

如果您想翻转它并从最新开始,那么这将起作用:

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