Подтвердить что ты не робот

Поле Rails по полю ассоциации

У меня есть следующие модели

class User
  attr_accesible :first_name, :phone_number
  has_one :user_extension
end

class UserExtension
  attr_accessible :company, :user_id
  belongs_to :user
end

У меня есть таблица, которая содержит всех пользователей. И мне нужно отсортировать эту таблицу с помощью first_name, phone_number, компании. С first_name, phone_number у меня нет никаких проблем, порядок работает отлично, в примере

@users = User.order("first_name desc")

но мне также нужна сортировка по компаниям и не знаю, как это сделать.

И я могу получить название компании таким образом

@user.user_extension.company

Итак, у меня проблемы с sql, что даст мне всех пользователей, заказанных компанией. DB: PostgreSQL. Благодарю.

Edit:

Я должен предоставить дополнительную информацию об этих моделях.

create_table "user_extensions", :force => true do |t|
  t.integer  "user_id"
  t.string   "company"
end

create_table "users", :force => true do |t|
  t.string   "first_name"
  t.string   "phone_number" 
end

Кроме того, я попытался использовать join

User.joins(:user_extension).order("user_extension.company desc")

и что я получаю

 User Load (1.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_extensions" ON "user_extensions"."user_id" = "users"."id" ORDER BY user_extension.company desc
PG::Error: ERROR:  relation "user_extensions" does not exist

о

User.includes(:user_extension).order("user_extension.company desc")

i также получаем

PG::Error: ERROR:  relation "user_extensions" does not exist

Решенный У меня проблемы с моим bd, все соединения работают нормально.

4b9b3361

Ответ 1

Попробуйте следующее:

@users = User.includes(:user_extension).order("user_extensions.company desc")

Мне кажется, вам нужно order: user_extensions, а не user_extension

Ответ 2

Слияние может сделать запрос меньшим/более зрелым, и он быстрее сравнивается со мной в Rails 4.x:

@users = User.joins(:user_extension).merge(UserExtension.order(company: :desc))

Ответ 3

@users = User.order("user_extension.company desc") должен работать нормально.