我在我的 Rails 3.2.11 应用程序中使用 Ransack 并且喜欢它。我目前正在搜索与给定高中匹配的个人资料,如下所示:
<%= f.check_box :profile_high_school_cont, {}, "#{current_user.profile.high_school}", '' %>
但是,我想为此添加一些额外的逻辑,并进一步将搜索细化为个人资料,以允许其他用户通过他们的高中找到他们。
所以我想知道除了个人资料的 :high_school 是否包含某些文本之外,是否还有一种方法可以检查个人资料的 :show_high_school 是否为真。
在四处逛逛(特别是这里和这里)之后,我尝试了以下自定义 ransacker:
ransacker :by_high_school,
:formatter => proc {
|high_school| Profile.where(:high_school => high_school, :show_high_school => true)
} do |parent|
parent.table[:user]
end
我将它添加到了拥有一个配置文件的用户模型和属于用户的配置文件模型。在每种情况下,我都会收到一个错误:
undefined method `gsub' for []:ActiveRecord::Relation
在 Profile.rb 中定义时,我收到以下错误:
User.search(:profile_by_high_school_cont => "Cent").result
我的数据库是 PostgreSQL