2017-11-28 4 views
1

Ich versuche ransack zu verwenden, um nach einem Attribut in einer has_one-Zuordnung in einem Modell zu suchen.
Zeit in meinem Modell habe ich:Ransack-Suche auf has_one: through (alias)

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 

ich von instructor_user's Namen in meiner Umfrage Antwort Ansicht gesucht werden soll. Soll ich das mit einem Ransacker machen? Mein Verständnis von Arel ist sehr begrenzt, aber kann ich so etwas tun? (Ich weiß, dass dies nicht funktioniert, wie es ist ..)

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 

In meiner Umfrage Antwort Controller Im Moment habe ich:

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 

Jede Hilfe, Ressourcen und Führung wäre sehr dankbar.

Antwort

0

Ich glaube nicht, dass Sie speziell einen Ransacker brauchen. Ich glaube, Ihrer Ansicht nach in einem search_form_for Sie einfach nur tun konnte:

<%= f.search_field :instructor_user_name %> 

Auch in Ihrem Controller statt @survey_responses = paginate(@q) Ich glaube, Sie brauchen @survey_responses = paginate(@survey_responses) so können Sie die Antworten Paginieren nicht die ransack Objekt (könnte falsch auf sein Dies hängt davon ab, welchen Seitenumbruch Sie verwenden.

Verwandte Themen