嵌套关联包含在分页中时,日期搜索失败

时间:2013-10-23 01:04:14

标签: ruby-on-rails will-paginate ransack

我有2个模型Person和Address with a并且属于许多连接表关联。

使用will_paginateransack

在“日期”字段上过滤时,会正确过滤第一页。当我点击任何其他分页链接时,查询从date(persons.dob) >= '2013-09-01')date(persons.dob) >= 2013)的更改

class Person
  has_many :person_addresses
  has_many :addresses, through: :person_addresses
end

class Address
  has_many :person_addresses
  has_many :persons, through: :person_addresses
end

class PersonAddress
  belongs_to :person
  belongs_to :address
end

人员搜索表单包含dob_gteqdob_lteqname_contaddresses.street_cont个过滤器。

如果我仅对dob_gteq进行过滤,则第一页可正常运行。所有其他分页导致:

ActionView::Template::Error (PG::UndefinedFunction: ERROR:  operator does not exist: date >= integer
 LINE 1: ...name" WHERE ((date(persons.dob) >= 2013 AN...

从搜索表单中删除addresses.street_cont过滤器,可以正常工作并按预期分页。


编辑请求的控制器操作

@q = Person.search(params[:q])
@persons = @q.result(:distinct => true).paginate(:page => params[:page], :per_page => 30)

编辑2

Params进入搜索:

Parameters: {"utf8"=>"✓", "q"=>{"name_cont"=>"", "addresses_street_cont"=>"", "addresses_zipcode_cont"=>"", "dob_gteq"=>"09-01-2013", "dob_lteq"=>""}, "commit"=>"Filter"}

1 个答案:

答案 0 :(得分:0)

在我的情况下,将列从日期时间更改为更适合的日期,解决了我的问题。