【问题标题】:Search over whole array in ruby over 2 Joins在 ruby​​ 中搜索整个数组超过 2 个连接
【发布时间】:2014-03-06 07:30:21
【问题描述】:

你好,如果我有以下情况,有没有办法在 ruby​​ 中搜索整个数组。

型号: 交易, 书, 类别

class Book < ActiveRecord::Base

has_and_belongs_to_many :categories
has_and_belongs_to_many :deals

end

class Category < ActiveRecord::Base
has_and_belongs_to_many :books
end

class Deal < ActiveRecord::Base
has_and_belongs_to_many :books

end

所以如果我在控制台中执行以下操作:

Deals.first.books 

-> 我得到了属于第一笔交易的所有书籍。

但现在我想从第一笔交易中获得所有书籍,例如 2 个特殊类别。但是这样的事情不起作用:

Deal.first.books.all.categories.where(:name=>"Bestseller")

如果我执行以下操作:

Deal.first.books.first.categories.where(:name=>"Bestseller")

它有效,但显然只有当第一本书有这个类别时才会给我。如何从第一笔交易中获得所有畅销书类别甚至 2 个类别的书籍。

每一个提示或建议将不胜感激。谢谢!

【问题讨论】:

  • @bjhaid,认为你需要where(categories: { name: "Bestseller" })
  • 这个Deal.includes(:books).includes(:categories).where(categories: { name: "Bestseller" }).first.books

标签: ruby-on-rails ruby arrays jointable


【解决方案1】:

单身

Deal.includes(books: :categories).where(categories: {name: "Bestseller"}).books

单个/多个

Deal.includes(books: :categories).where(categories: 
    {name: ["Bestseller","Hot Stuff"]}).books

【讨论】:

  • 这对我有用:所以在 .books 之前添加一个“第一个”可以使这项工作变得完美。 Deal.includes(books: :categories).where(categories: {name: "Bestseller"}).first.books
  • 哦,对不起,我读得不够好!很高兴你成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多