我的范围出现语法错误,并且在堆栈溢出时搜索了许多示例,但无法解决它,我们非常感谢您的帮助。
模型
user.rb
belongs_to :company
scope :company_order, ->() { joins(:company).where('company.companyname desc') }
company.rb
has_many users
模式
users
t.string "name",
t.string "email",
t.integer "company_id"
companies
t.string "companyname",
观看档案
<% @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| %>
中调用它,但我收到以下语法错误:
错误
SQLite3::SQLException: near "desc": syntax error: SELECT "users".* FROM "users" INNER JOIN "companies" ON "companies"."id" = "users"."company_id" WHERE (company.companyname desc)
有人可以告诉我正确的方法来写我的范围 我能够显示用户列表,但按他们的顺序排序 公司名称
答案 0 :(得分:1)
ORDER
不应位于where
方法内,而应放在order
方法内:
scope :company_order, ->() { joins(:company).order('companies.companyname desc') }
where
用于查询条件,也请注意复数表名。