[英]Ransack search on has_one :through (alias)
我正在尝试使用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
任何帮助,资源和指导将不胜感激。
我认为您不需要特别的抢劫犯。 我相信您的观点,在search_form_for
内部,您可以做到:
<%= f.search_field :instructor_user_name %>
此外,在您的控制器,而不是@survey_responses = paginate(@q)
我认为你需要@survey_responses = paginate(@survey_responses)
这样你就可以分页不响应的洗劫对象(基于什么分页宝石你”可能是错在这重新使用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.