Minidusen: Filtering associated records
Minidusen lets you find text in associated records.
Assume the following model where a
Contact record may be associated with a
class Contact < ApplicationRecord belongs_to :group validates_presence_of :name, :street, :city, :email end class Group < ApplicationRecord has_many :contacts validates_presence_of :name end
We can filter contacts by their group name by joining the
groups table and filtering on a joined column.
Note how the joined column is qualified as
groups.name (rather than just
class ContactFilter include Minidusen::Filter filter :text do |scope, phrases| columns = [:name, :email, 'groups.name'] scope.includes(:group).where_like(columns => phrases) end end