【发布时间】:2017-06-02 14:21:59
【问题描述】:
我觉得这很简单,但我发现似乎没有任何效果。我正在使用带有 Rails 5 的 PostgreSQL 数据库。我需要运行一个查询来查找在 name 列中包含文本字符串或在关联模型中找到相同字符串的所有产品。这是我的模型结构。
class NormalBrand < ApplicationRecord
has_many :normal_models
end
class NormalModel < ApplicationRecord
belongs_to :normal_brand
has_many :products
end
class Product < ApplicationRecord
belongs_to :normal_model
end
每个模型都有一个名为“名称”的字段。我正在尝试在我的产品控制器中创建一个查询,以查找在 3 个模型“名称”列中的任何一个中找到文本字符串的所有产品。像这样的...
@products = Product.where("name like lower(?)", "%#{value}%").or.where("normal_model.name like lower(?)", "%#{value}%").or.where("normal_model.normal_brand.name like lower(?)", "%#{value}%")
我知道上面的查询是完全错误的,我应该有某种连接语句,但这就是我需要帮助的地方。提前致谢。
【问题讨论】:
-
Product.joins(:normal_model).where("normal_models.name like lower(?) OR products.name like lower (?)", "%#{value}%", "%#{value}%")试试这个
标签: ruby-on-rails ruby ruby-on-rails-5