簡體   English   中英

Rails-查詢關聯模型

[英]Rails - Query Associated Models

我覺得這很簡單,但是我發現什么都沒用。 我正在使用帶有Rails 5的PostgreSQL數據庫。我需要運行一個查詢,以查找在名稱欄中包含文本字符串或在關聯模型中找到相同字符串的所有產品。 這是我的模型結構。

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}%")

我知道上面的查詢是完全錯誤的,我應該有某種joins語句,但這是我需要幫助的地方。 提前致謝。

加入normal_modelnormal_brand ,然后可以查詢所有三個表

@products = 
  Product
  .joins(normal_model: :normal_brand)
  .where("products.name like lower(?)", "%#{value}%")
  .or.where("normal_models.name like lower(?)", "%#{value}%")
  .or.where("normal_brands.name like lower(?)", "%#{value}%")

或者只是在一個原始的地方

@products = 
  Product
  .joins(normal_model: :normal_brand)
  .where("products.name      LIKE lower(:term) OR
          normal_models.name LIKE lower(:term) OR
          normal_brands.name LIKE lower(:term)", term: "'%#{value}%'")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM