[英]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_model
和normal_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.