我有一个包含表格Exchanges
,Company
和Company_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。任何帮助都感激不尽。
答案 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本质上不是数字,上述内容可能无效,但链接提供了许多其他方法来实现此目的。