我的用户型号有很多电话号码。电话号码属于在数据库中创建的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顺序显示电话号码。编写更复杂的查询的正确方法是什么?
答案 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 %>