简体   繁体   中英

ActiveModel search by association

I've seen similar questions but nothing exactly like mine. I apologize if this is a duplicate - if it is, please refer me to answer(s).

I need to search orders by customer names, and the link between the two is users. Here are my models:

class Customer < ApplicationRecord
  belongs_to :user
end

class User < ApplicationRecord
  has_one :customer
  has_many :orders
end

class Order < ApplicationRecord
  belongs_to :user
end

I'm trying to search using:

@orders = Order.joins(:user).joins(:customers).where('last_name LIKE ?', name[0])

But I get the error message -

Can't join 'Order' to association named 'customers'; perhaps you misspelled it?

I'm sure I don't have the associations right, but I'm not sure how to do it. Thanks for any advice you can provide.

Please try this.

Order.joins(user: [:customer]).where(customer: {last_name: name[0]})

I took help from this and this

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM