Просмотрев несколько вариантов, включая pg_search, я не могу найти ресурс, который может помочь мне понять, как организовать поиск по нескольким таблицам и с несколькими фильтрами. У меня есть две модели, профиль и тема, обе связаны через unique_id. Я бы хотел, чтобы пользователь выбирал из множества фильтров по многим моделям и возвращал результаты. Например, я хочу, чтобы пользователь мог искать атрибут name в модели профиля и атрибут grade в предметной модели и возвращать список, соответствующий эти параметры поиска. У меня нет проблем с созданием одного поискового фильтра, но когда я добавляю дополнительные фильтры для разных категорий, кажется, что другие поисковые фильтры не взаимодействуют друг с другом. Ниже приведен некоторый мой код. Рад добавить больше кода, просто не знаю, где с этим быть. Мы будем очень признательны за любую помощь или направление, которое вы могли бы предоставить.
БД профилей
class CreateProfiles < ActiveRecord::Migration
def change
create_table :profiles do |t|
t.integer :unique_id
t.string :name
t.integer :age
t.string :sex
t.references :user, index: true, foreign_key: true
t.timestamps null: false
end
end
end
Тематическая БД
class CreateSubjects < ActiveRecord::Migration
def change
create_table :subjects do |t|
t.integer :unique_id
t.string :subject
t.integer :grade
t.references :user, index: true, foreign_key: true
t.timestamps null: false
end
end
end
Модель профиля
class Profile < ActiveRecord::Base
include PgSearch
belongs_to :user
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
attributes = row.to_hash
Profile.create! attributes
end
end
end
Тематическая модель
class Subject < ActiveRecord::Base
include PgSearch
belongs_to :user
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
attributes = row.to_hash
Subject.create! attributes
end
end
end