首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何搜索狂欢::订单和与ransack宝石的关联

如何搜索狂欢::订单和与ransack宝石的关联
EN

Stack Overflow用户
提问于 2015-10-13 12:10:07
回答 1查看 781关注 0票数 3

使用狂欢节和洗劫,如何可能返回狂潮::变体包含在Spree::订单已经完成了一个特定的日期?ransack文档给出了一些关于搜索关联的建议,但似乎不够深入。

代码语言:javascript
运行
复制
Spree::Order
  has_many :line_items

Spree::LineItem
  belongs_to :line_item
  belongs_to :variant 

Spree::Variant
  has_many: line_items

已完成的订单可在以下位置进行搜索:

代码语言:javascript
运行
复制
  o=Spree::Order.complete.ransack(completed_at_gt: '2015-05-01')

但是,如何在这些订单中找到狂欢节::LineItems,并在这些订单中返回Spree::Variants的SKU尚不清楚。

我试图使用ransack,因为这将在狂欢报告中使用。

EN

Stack Overflow用户

回答已采纳

发布于 2015-10-13 17:26:14

你根本不需要在这个地区使用洗劫。ActiveRecord将允许您做您需要的事情:

代码语言:javascript
运行
复制
Spree::Order.complete.where(
  Spree::Order.arel_table[:completed_at].gteq(
    Date.new(2015, 10, 1)
  )
).joins(
  line_items: :variant
).select(:sku).distinct.pluck(:sku)

如果必须使用ransack,可以使用ActiveRecord关系,使用.result并应用联接等等。

代码语言:javascript
运行
复制
Spree::Order.complete.ransack(
  completed_at_gt: '2015-05-01'
).result.joins(
  line_items: :variant
).select(:sku).distinct.pluck(:sku)

由于您没有.pluck,所以您正在运行一个非常老版本的狂欢节,即预Rails 4。

代码语言:javascript
运行
复制
Spree::Order.complete.ransack(
  completed_at_gt: '2015-05-01'
).result.joins(
  line_items: :variant
).select(:sku).map(&:sku).uniq
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33102365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档