0

我有一个有很多电话号码的用户模型。电话号码属于在数据库中创建的电话类型(例如办公室、家庭、手机)。

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 顺序显示电话号码。编写更复杂查询的正确方法是什么?

4

1 回答 1

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 %>
于 2013-03-18T19:59:01.570 回答