Ruby on rails 4 搜索和排序不适用于某些属性

Ruby on rails 4 搜索和排序不适用于某些属性,ruby-on-rails-4,activerecord,spree,ransack,Ruby On Rails 4,Activerecord,Spree,Ransack,搜掠搜索在某些属性下工作正常: Spree::Callback.all.ransack(name_cont: 1).result SELECT "spree_callbacks".* FROM "spree_callbacks" WHERE ("spree_callbacks"."name" ILIKE '%1%') 不要和别人一起工作 Spree::Callback.all.ransack(phone_cont: 1).result SELECT "spree_callbacks".*

搜掠搜索在某些属性下工作正常:

Spree::Callback.all.ransack(name_cont: 1).result

SELECT "spree_callbacks".* FROM "spree_callbacks" WHERE ("spree_callbacks"."name" ILIKE '%1%')
不要和别人一起工作

Spree::Callback.all.ransack(phone_cont: 1).result

SELECT "spree_callbacks".* FROM "spree_callbacks"
怎么了

p.S.回调是我在Spree模块下的自定义模型

以及回调对象的示例:

Spree::Callback.first
  Spree::Callback Load (1.4ms)  SELECT  "spree_callbacks".* FROM "spree_callbacks"  ORDER BY "spree_callbacks"."id" ASC LIMIT 1
=> #<Spree::Callback:0x00000009eb68c0 id: 39, 
phone: "123", 
comment: "", 
created_at: Wed, 12 Jul 2017 03:37:03 UTC +00:00, 
updated_at: Wed, 12 Jul 2017 03:41:34 UTC +00:00, 
name: "123", 
processed: true>
Spree::Callback.first
Spree::回调加载(1.4ms)按“Spree\u回调”顺序从“Spree\u回调”中选择“Spree\u回调”。“id”ASC限制1
=> #

@nuT707-要使用ransack gem进行搜索,您首先必须将所有要执行搜索的字段列为白名单。 因此,在您的
callback.rb
model中添加以下行-


self.whitelisted\u ransackable\u属性|=%w[手机]

现在试着用搜身搜索


希望这对您有所帮助。

self.whitelisted\u ransackable\u attributes | |
Hi@nuT707
self.whitelisted\u ransackable\u attributes |
这将只在白名单数组之前不存在的情况下将
phone
添加到白名单数组中
|
此ruby或运算符,例如a=[1,2,3]a |=[2,4]=>[1,2,4],如您在此处使用的记忆
| |=
是用于记忆的用户,例如a=[1,2,3]a |=[2,4]=>[1,2,3]我收到的是true,而不是array
self.whitelisted_ransackable_属性=%w[手机]
工作正常