Ruby on rails Rails 4-多态关联之间的复杂查询
我有一个Ruby on rails Rails 4-多态关联之间的复杂查询,ruby-on-rails,associations,polymorphic-associations,Ruby On Rails,Associations,Polymorphic Associations,我有一个交易模型,它与产品和服务都有多态关联 以下是迁移: create_table :products do |t| t.string :name t.timestamps null: false end create_table :services do |t| t.string :name t.integer :duration t.timestamps null: false end create_table :transactions d
交易
模型,它与产品
和服务
都有多态关联
以下是迁移:
create_table :products do |t|
t.string :name
t.timestamps null: false
end
create_table :services do |t|
t.string :name
t.integer :duration
t.timestamps null: false
end
create_table :transactions do |t|
t.integer :amount
t.decimal :price
t.references :sellable, polymorphic: true, index: true
t.references :bill, index: true, foreign_key: true
t.timestamps null: false
end
这是模型
class Transaction < ActiveRecord::Base
belongs_to :bill
belongs_to :sellable, polymorphic: true
def total; price * amount; end
end
class Product < ActiveRecord::Base
has_many :transactions, as: :sellable
end
class Service < ActiveRecord::Base
has_many :transactions, as: :sellable
end
类事务
基本上,每笔交易都知道售出了哪些商品、多少单位以及每单位的成本
- 如何按销售单位获得前5名物品
- 我如何获得前五名的对象,按单位收入计算
只是一个粗略的想法。我希望它有帮助看起来像是定制查询/arel_表的用例
只是一个粗略的想法。我希望这能有所帮助这不是数行。一笔交易可以卖出超过1个单位,那么您是否也应该在交易表中的一列中指出这一点?对不起,如果我没有得到你的数据库结构。您能解释一下您将如何计算单位吗?然后,第一个查询可以修改为:选择*,按交易从交易组中选择金额(金额)作为单位。可销售的\u id,交易。可销售的\u类型按单位的订单描述限制5;请注意,它在MySQL中可以正常工作,但在其他数据库(如Postgres)中可能无法工作。您需要限制SELECT子句中的列,使其能够使用它们。希望有帮助,因为当GROUP BY出现在Postgresql中时,SELECT list表达式引用未分组的列(聚合函数中除外)是无效的,因为未分组的列可能会返回多个值。您是否可以添加一个示例,说明它在Postgresql中的工作方式,拜托?这不是数行的问题。一笔交易可以卖出超过1个单位,那么您是否也应该在交易表中的一列中指出这一点?对不起,如果我没有得到你的数据库结构。您能解释一下您将如何计算单位吗?然后,第一个查询可以修改为:选择*,按交易从交易组中选择金额(金额)作为单位。可销售的\u id,交易。可销售的\u类型按单位的订单描述限制5;请注意,它在MySQL中可以正常工作,但在其他数据库(如Postgres)中可能无法工作。您需要限制SELECT子句中的列,使其能够使用它们。希望有帮助因为当GROUP BY出现在Postgresql中时,SELECT list表达式引用未分组的列(聚合函数中除外)是无效的,因为未分组的列可能会返回多个值。请添加一个示例,说明它在Postgresql中的工作方式?