Rails 3 ActiveRecord查询问题

时间:2011-03-10 22:44:51

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

我的模型X belongs_to :y并且有一个字段quantity

Y型号:

has_many :xs
belongs_to :user
belongs_to :z

User型号:

has_many :ys
has_many :xs, :through => :ys

Z型号

has_many :ys
has_many :users, :through => :ys

如何找到用户对特定xs的{​​{1}}个用户数? 如何找到用户对特定z xs的数量字段的总和?

我想找到一个使用rails 3的活动记录查询语法的解决方案,请尽可能在数据库级别进行。我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

让我试着以另一种方式翻译它。

X模型成为购物车项目

class CartItem
  belongs_to :cart
  attr_accessor :quantity
end

Y模型成为购物车

class Cart
  has_many :cart_items
  belongs_to :user
  belongs_to :section
end

用户模型保持不变

class User
  has_many :carts
  has_many :cart_items, :through => :carts
end

Z模型成为一个部分

class Section
  has_many :carts
  has_many :users, :through => :carts
end

因此,你问:

  • 如何找到用户对特定部分的购物车数量?
  • 如何找到用户对a的购物车商品的数量字段的总和 特别节?

将以下范围添加到CartItem

scope :for_section, lambda { |section|
  includes(:cart).where('carts.section_id = ?', section.id)
}

答案将是

  • user.cart_items.for_section(部分).Count之间的
  • user.cart_items.for_section(部分)的.sum( '数量')

这些命令将生成确切的SQL查询以查找您正在寻找的答案!