2016-04-06 2 views
0

У меня есть синтаксическая ошибка с моей областью видимости и поиск по многим примерам при переполнении стека, но не удалось ее решить, ваша помощь будет высоко оценена.Сортировка списка пользователей посредством ассоциации с областью действия - Rails 4

  • я пытаюсь создать область, которая упорядочивает список пользователей по имени компании
  • мог один любезно сообщить мне о том, как правильно написать сферу, где я могу отобразить список пользователей, но заказать их по CompanyName

models

user.rb 
belongs_to :company 
scope :company_order, ->() { joins(:company).where('company.companyname desc') } 

company.rb 
has_many users 

schema

users 
t.string "name", 
t.string "email", 
t.integer "company_id" 

companies 
t.string "companyname", 

views file

<% @users.company_order.each do |user| %> 
    <div class="tablerow"> 
    <div class="tablecell"> 
     <div>e: <%= link_to user.name, '#' %></div> 
     <div>t: <%= link_to user.email.tel, '#' %></div> 
    </div> 
    <div class="tablecell"> 
     <div>Company</div> 
     <div><%= user.company.companyname %></div> 
    </div> 
    </div> 
<% end %> 

мой объем: scope :company_order, ->() { joins(:company).where('company.companyname desc') } и попытался назвать его в представлениях <% @users.company_order.each do |user| %>, но я получаю ошибку ниже синтаксиса:

error

SQLite3::SQLException: near "desc": syntax error: SELECT "users".* FROM "users" INNER JOIN "companies" ON "companies"."id" = "users"."company_id" WHERE (company.companyname desc) 

could one kindly advise me on the correct way to write a scope where i am able to display the list of users but order them by their companyname

ответ

1

ORDER не должен быть внутри метода where , но внутри order один:

scope :company_order, ->() { joins(:company).order('companies.companyname desc') } 

where предназначен для условий запроса, также обратите внимание на название таблицы во множественном числе.

+0

спасибо soo много !!! @murifoX – ARTLoe

Смежные вопросы