Я пытаюсь реализовать функцию пользовательского поиска в моем приложении Rails.Пользовательский поиск в Ruby on Rails
У меня есть 3 таблицы User
Company
и CompanyUser
Мои отношения объявленным являются
class CompanyUser < ActiveRecord::Base
belongs_to :company
belongs_to :user
...
end
В Company.rb
has_many :company_users, dependent: :destroy
has_many :users, through: :company_users
В User.rb
has_many :company_users, dependent: :destroy
has_many :companies, through: :company_users
и на моей странице просмотра Я перечисляю все компании, используя таблицу company_users Теперь у меня есть поле поиска, в котором я могу ввести имя, в котором этот список фильтрует этот список пользователей компании.
Я звоню метод из моей таблицы CompanyUsers фильтровать результат поиска как этот
@company_users = CompanyUser.all
if params[:search_data].present?
@company_users = @company_users.filter_company_users(params[:search_data])
end
где PARAMS [: search_data] передается тем же способом, когда данные поиска вводится в поле поиска.
Это метод, который выполняет фильтрацию поиска.
def self.filter_company_users(search_data)
where('company_id like (?)', "%#{search_data}%")
end
Прямо сейчас я могу получить результат только тогда, когда я ввожу правильный id
из CompanyUser таблицы в этом поле поиска. Я пытаюсь выполнить поиск по полям из таблицы пользователя и таблицы компании. Например, email
от Пользователя и name
от Компании.
Nopes .. Я пробовал это раньше .. Это дает ошибку. –