ROR应用程序 - 尝试更改默认范围顺序

时间:2014-03-27 23:42:17

标签: mysql ruby-on-rails sorting activerecord

我有一个包含表格ExchangesCompanyCompany_Listings的数据库。

Exchanges table
  name
  full_name

Companies table
  name
  full_name
  exchange_id

Company_Listings table
  company_id
  exchange_id
  company_code
  option_name
  [...] other columns

如果商家信息是公司,则会有company_code个例子。必和必拓,如果是公司选项,它将有option_name例如BHPXX但没有company_code。两者都通过company_id链接到公司“Broken Hill Billiton Pty Ltd。”

Exchanges model
  has_many :companies, dependent: :destroy
  has_many :company_listings, dependent: :destroy 

Companies Model 
  belongs_to :exchange
  has_many :company_listings,

Company_Listing Model
  belongs_to :company
  belongs_to :exchange
  default_scope { order('exchange_id ASC', 'company_code ASC', 'option_name ASC') }

默认范围将公司列表命令为BHP,CBA ... BHPXX。

我正在努力获得排序,以便它给BHP,BHPXX,CBA。任何帮助都感激不尽。

1 个答案:

答案 0 :(得分:0)

试试这个:

default_scope { order('company_code ASC', 'option_name ASC', 'exchange_id ASC')

如果由于空值而无效,您可能需要查看它是如何完成的:

ORDER BY ASC with Nulls at the Bottom

MySQL Orderby a number, Nulls last

default_scope { order('-company_code DESC', '-option_name DESC', 'exchange_id ASC')

编辑:鉴于company_code和option_name本质上不是数字,上述内容可能无效,但链接提供了许多其他方法来实现此目的。