【问题标题】:ROR application - trying to change default scope orderROR 应用程序 - 尝试更改默认范围顺序
【发布时间】:2014-03-27 23:42:16
【问题描述】:

我有一个包含表 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。感谢您提供任何帮助。

【问题讨论】:

    标签: mysql ruby-on-rails sorting activerecord


    【解决方案1】:

    试试这个:

    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 本质上不是数字,上述内容可能在这里不起作用,但链接提供了许多其他方法来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-23
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多