Rails - 每个模型的唯一ID,而不是整个数据库

时间:2012-12-28 23:54:29

标签: ruby-on-rails database ruby-on-rails-3

我有一个User模型和一个Book模型。一本书属于一个用户,一个用户有很多书。

在视图中,我通过

显示用户在用户节目视图中创建的所有书籍
<% @user.books.each do |book| %>
  <%= book.id %> 
  <%= book.title %>
<% end %>

但是book.id的数字对于数据库中的所有书籍都是唯一的,而不仅仅是每个用户。我希望这个id对用户来说是唯一的,所以如果数据库中有1000本书,而用户只有3本书,它会将ID显示为1,2和3(而不是像476,239,105,等)。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

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

如果您确实需要ID,可以在书籍表中添加单独的字段,并通过在模型中计算ID来处理ID号...

另一种方法是添加另一个类似user_books的模型,并构建一个包含计数器字段的多个关联,请查看http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

希望它有所帮助。

答案 1 :(得分:0)

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

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

因此,不是book.id,而是&lt;%= count%&gt;

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

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