Rails 5自定义查询与多个关键字

时间:2018-03-21 04:05:23

标签: ruby-on-rails ruby-on-rails-5

我的producttag模型通过联接表has_and_belongs_to_many具有products_tags关联。我有许多带有Limestones标签的产品,许多带有Moldings标签的产品,但我想只展示那些兼容两者的产品。我知道我遗漏了一些Rails / Ruby的基础知识,但我仍然不会看到它。

我正在尝试下面的代码给出了错误PG::UndefinedTable: ERROR: missing FROM-clause entry for table "tag"

products_controller.rb

...
def index
      if params[:query]
        @products = Product.search_for(params[:query]).includes(:tags)
        @mouldings = @products.where('tag.name LIKE ? AND tag.name LIKE ?', 'Mouldings', 'Limestones')
      else
        ...
      end
end
...

1 个答案:

答案 0 :(得分:5)

尝试使用以下from sqlalchemy.dialects.postgresql import UUID from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Foo(db.Model): id = Column(Integer, primary_key=True) uuid = Column(UUID(as_uuid=True), unique=True, nullable=False) 代替tags

tag

因为您的表格名称为@mouldings = @products.where('tags.name ILIKE ? AND tags.name ILIKE ?', 'Mouldings', 'Limestones') 而非tags且明确表示

  

PG :: UndefinedTable:错误:表“tag”缺少FROM子句条目

<强>更新

tag

更新2

@products = Product.search_for(params[:query]).where('true')
@mouldings = @products.includes(:tags).where('tags.name ILIKE ? AND tags.name ILIKE ?', '%Mouldings%', '%Limestones%')