Я пытаюсь использовать ransack для поиска атрибута в ассоциации has_one в модели.
В настоящее время в моей модели у меня есть:
class SurveyResponse < ActiveRecord::Base
belongs_to :course_schedule
has_one :instructor, through: :course_schedule
has_one :instructor_user, through: :instructor, foreign_key: "user_id", source: :user
Я хочу выполнить поиск по имени instructor_user's
в представлении ответов на опрос. Должен ли я делать это с вымогателем? Мое понимание Arel очень ограничено, но могу ли я сделать что-то подобное? (Я знаю, что это не работает как есть..)
def self.ransackable_attributes(auth_object)
[
'created_at',
'instructor_user_name'
]
end
ransacker :instructor_user_name, type: :string do
Arel.sql('string(survey_responses.instructor_user.last_name)')
end
В моем контроллере ответов на опросы у меня сейчас есть:
def index
@search_associations = [:course, :user]
@q = SurveyResponse.where(corporation_id: @corporation.id).ransack(params[:q])
@q.build_condition
@survey_responses = @q.result.includes(:course, :user, :course_schedule, :instructor, :instructor_user).order(created_at: :asc)
@survey_responses = paginate(@q)
end
Будем очень признательны за любую помощь, ресурсы и рекомендации.