Minidusen lets you find text in associated records.
Assume the following model where a Contact
record may be associated with a Group
record:
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 name
):
class ContactFilter
include Minidusen::Filter
filter :text do |scope, phrases|
columns = [:name, :email, 'groups.name']
scope.joins(:group).where_like(columns => phrases)
end
end
Posted by Henning Koch to makandra dev (2020-11-16 15:59)