2014-03-27 23 views
0

我有一個數據庫表Exchanges,CompanyCompany_ListingsROR應用程序 - 試圖更改默認範圍訂單

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。

我想讓排序,讓它必和必拓,BHPXX,CBA。任何幫助感激地收到。

回答

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本質上不是數字,但鏈接提供了很多其他方法來做到這一點。

+0

仍然不存在,但你的答案給了我想法 - 謝謝 – user1854802