假设我有以下多态关系
class Metric < ApplicationRecord
belongs_to :metrizable, polymorphic: true
belongs_to :company, class_name: 'Company', foreign_key: 'metrizable_id', optional: true
belongs_to :portfolio, class_name: 'Portfolio', foreign_key: 'metrizable_id', optional: true
end
class Company < ApplicationRecord
has_many :metrics, as: :metrizable, dependent: :destroy
end
class Portfolio < ApplicationRecord
has_many :metrics, as: :metrizable, dependent: :destroy
end
现在指标可以用公司或投资组合来衡量。 在两个表(公司、投资组合)中,名称字段都存在于数据库中。
example:
@search = Metric.ransack(params[:q])
@search.sorts = ["company_name asc", "portfolio_name asc"]
@search.result.to_sql
我得到类似的东西
"SELECT \"metrics\".* FROM \"metrics\" LEFT OUTER JOIN \"company\" ON \"company\".\"id\" = \"metrics\".\"metrizable_id\" LEFT OUTER JOIN \"portfolios\" ON \"portfolios\".\"id\" = \"metrics\".\"metrizable_id\" ORDER BY \"company\".\"name\" ASC, \"portfolios\".\"name\" ASC, \"metrics\".\"name\" ASC"
即使我获得了所有记录,它们也不是按实体.名称排序的,我希望它们全部按实体.名称独立排序。
假设我有以下多态关系
class Metric < ApplicationRecord
belongs_to :metrizable, polymorphic: true
belongs_to :company, class_name: 'Company', foreign_key: 'metrizable_id', optional: true
belongs_to :portfolio, class_name: 'Portfolio', foreign_key: 'metrizable_id', optional: true
end
class Company < ApplicationRecord
has_many :metrics, as: :metrizable, dependent: :destroy
end
class Portfolio < ApplicationRecord
has_many :metrics, as: :metrizable, dependent: :destroy
end
现在指标可以用公司或投资组合来衡量。 在两个表(公司、投资组合)中,名称字段都存在于数据库中。
example:
@search = Metric.ransack(params[:q])
@search.sorts = ["company_name asc", "portfolio_name asc"]
@search.result.to_sql
我得到类似的东西
"SELECT \"metrics\".* FROM \"metrics\" LEFT OUTER JOIN \"company\" ON \"company\".\"id\" = \"metrics\".\"metrizable_id\" LEFT OUTER JOIN \"portfolios\" ON \"portfolios\".\"id\" = \"metrics\".\"metrizable_id\" ORDER BY \"company\".\"name\" ASC, \"portfolios\".\"name\" ASC, \"metrics\".\"name\" ASC"
即使我获得了所有记录,它们也不是按实体.名称、实体(公司、投资组合)排序的,我希望将其全部按独立于源表的实体.名称排序。