2017-03-28 8 views
1

나는 Project::ContributionUserbelongs_to 것을, 그리고 Userhas_oneUser::Profile 있습니다.Ransacker 및 Arel는

first_namelast_name 내가 나 자신의 사용자 프로필 first_namelast_name 내 기여를 필터링 할 수 있습니다 것 ransacker를 만들 User::Profile

에 포함 된 필드입니다.

어떻게 달성 할 수 있습니까?

이것은 내가 지금까지 뭘하려 : 내가 지금처럼 profile 테이블에 액세스 할 수 없기 때문에 parent.table[:profile_first_name]parent.table[:profile_last_name] :

# admin/contribution.rb 
filter :user_full_name_cont 

# models/user.rb 
ransacker :full_name do |parent| 
    Arel::Nodes::InfixOperation.new('||', parent.table[:profile_first_name], parent.table[:profile_last_name]) # error 
end 

이 때문에 실패합니다.

# models/user/profile.rb 
    ransacker :full_name, formatter: proc { |v| v.mb_chars.downcase.to_s } do |parent| 
    Arel::Nodes::NamedFunction.new('LOWER', 
    [Arel::Nodes::NamedFunction.new('concat_ws', 
     [Arel::Nodes.build_quoted(' '), parent.table[:first_name], parent.table[:last_name]])]) 
    end 

# admin/user.rb 
filter :user_profile_full_name_cont 
:

답변

0

마지막 해결책에 온