0

私はクラスを持っていますUser

class user class User < ActiveRecord::Base
  attr_accessible :username, :password
end

また、データベースに 3 人のユーザーがいます。

id username password
1    user5    pw5
2    user3    pw3
3    user2    pw2

私の見解は次のようになります:

<% @users.each do |user| %>
  <%= User.username %>, <%= user.password %> <br />
<% end %>

出力データは、ユーザーの行 ID で並べ替えられます。

user5, pw5
user3, pw3
user2, pw2

でソートして出力するにはどうすればよいusernameですか?

user2, pw2
user3, pw3
user5, pw5
4

4 に答える 4

1

sortを使用して比較できusernameます。

@users.sort { |x, y| x.username <=> y.username }.each do |user|
  # Your code
end

また、データベースからレコードを取得するために ActiveRecord を使用していると仮定すると、順序を使用してクエリを実行することもできます。これは、データベースがそのようなことを処理するためのものであるため、より良いオプションになります。:D

コントローラーで:

@users = User.order('username DESC')
于 2013-05-25T21:22:43.477 に答える
1

ASC注文

<% @users.sort_by{|e| e[:username]}.each do |user| %>
  <%= user.username %>, <%= user.password %> <br />
<% end %>

DESCオーダー

<% @users.sort_by{|e| e[:username]}.reverse.each do |user| %> <!-- or you can use @users.sort_by{|e| -e[:username]} -->
  <%= user.username %>, <%= user.password %> <br />
<% end %>
于 2013-05-25T21:27:32.710 に答える
-1
<% @users.sort{|u1,u2| u1.username <=> u2.username).each do |user| %>
<%= user.username %>, <%= user.password %> <br />

sortドキュメントを参照してください。

于 2013-05-25T21:23:50.700 に答える