Мне нужно собрать объекты, которые все связаны через несколько уровней ассоциаций, и я не знаю, кому это нужно.
Мне нужно получить коллекцию CustomText на основе параметра запроса строки.
В основном мне нужно сделать запрос, который будет тянуть коллекцию CustomText по имени:
@searched_content = params[:search].downcase
@query = CustomText.where("lower(name) like ?", "%#{@searched_content}%")
, но затем также фильтрует @query
для поиска только LineItems, которые были частью утвержденного заказа. Я использую Шпрее, где Spree::Order
has_many
Spree::LineItem
. По сути, делать что-то подобное (совсем не работает, но, надеюсь, вы сможете увидеть, что я пытаюсь сделать):
@query = Spree::LineItem.joins(:order).where(spree_orders: {state: "complete"}).joins(:custom_texts).where("lower(name) like ?", "%#{@searched_content}%"))
Модель:
class CustomText < ActiveRecord::Base
belongs_to :custom_set, :inverse_of => :custom_texts
end
class CustomSet < ActiveRecord::Base
belongs_to :spree_line_item, :class_name => Spree::LineItem, :foreign_key => :spree_line_item_id
has_may :custom_texts, :dependent => :destroy, :inverse_of => :custom_set
end
class LineItem < ActiveRecord::Base
has_many :custom_texts, :through => :custom_sets
has_many :custom_sets, :dependent => :destroy, :foreign_key => :spree_line_item_id
end
Любая помощь будет принята с благодарностью.