Rails:如何通过关联的模型特征来排序数组?

时间:2013-03-18 19:46:32

标签: ruby-on-rails activerecord associations

我的用户型号有很多电话号码。电话号码属于在数据库中创建的phone_type(例如办公室,家庭,移动电话)。

phone_type.rb:

class PhoneType < ActiveRecord::Base

#  id              :integer          not null, primary key
#  name            :string(255)
#  position        :integer          default(1)

  default_scope :order => 'position ASC'
  default_scope where(:active => true)

我一直在尝试编写一个显示用户电话号码的ActiveRecord查询,但其顺序取决于phone_type.position为phone_types设置的顺序。

我的旧代码是:

<% @phones.each do |p| %>
    <%= p.phone_type.name %> <%= p.value %> <br/>
<% end %>

但只按表ID顺序显示电话号码。编写更复杂的查询的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

试试这个:

@phones = Phone.all(:include => :phone_type)  #To avoid N+1 queries

<% @phones.sort_by{|p| p.phone_type.position}.each do |p| %>
  <%= p.phone_type.name %>
  <%= p.value %> <br/>
<% end %>