需要一些帮助来理解在rails活动记录中编写复杂查询的想法

时间:2012-03-17 22:13:34

标签: ruby-on-rails ruby-on-rails-3 activerecord join

我需要指导才能理解在rails中编写复杂查询的逻辑。

我有三个模特

Business

  has_many :customers
  has_many :transactions

Customer
  has_many :transactions
  belongs_to :business

Transaction
  belongs_to :businesss
  belongs_to :customer
//transaction model has a attribute amount which tells how much amount has been spent in this particular transaction.

enter image description here

现在我需要像这样实现过滤器。我发布截图原因很容易理解。

修改

每笔交易都意味着访问。总花费是指花费的总金额。

1 个答案:

答案 0 :(得分:1)

我怀疑是否有一个优雅的单一查询解决方案,它将支持AR的功能。但即使有一个,为了性能,您还必须为总花费排名值创建一个材质视图或聚合表。因此,假设您有物质视图total_spent_ranking(customer_id, rank),您可以执行通常的AR查询: (只是草图。)

Customer.joins(:transaction, :total_spent_ranking).select('customer.id').group_by('customer.id').having('total_spent_ranking.rank > 15 and count(distinct transaction.id) > 10')