Rails 4-在相关模型上使用字段的思维Sphinx过滤器

罗尔科斯

在我的Rails 4应用程序中,我有以下模型:

'AgencyGroup'

has_many :group_agencies
has_many :agencies, :through => :group_agencies

我在哪里保存“令牌”字段

代理商模式

  has_many :group_agencies
  has_many :agency_groups, :through => :group_agencies
  has_many :advertisements

“广告”模式

  belongs_to :agency

我使用了Think Sphinx,它的确很棒,但是现在我有了新的要求,可以按AgencyGroup令牌字段过滤“广告”。

基本上,我需要查找带有某些参数的广告,但仅适用于具有已发布令牌的代理商组中的代理商。

if params[:search]
 @results = Advertisement.search Riddle::Query.escape(params[:search]), :star => true, :page => params[:page], :per_page => 6
end

为了获得结果,我像这样运行http查询:

http://api.localhost.local:3000/v1/advertisements?token=JHW_tdXn5g-vQY1f_ZzLuw&search=Nissim

我想念的是什么?如何在TS中使用模型之间的关系?

我认为这里最好的方法涉及几个步骤:

步骤1:在您的广告索引中添加AgencyGroup ID作为属性。如果您使用的是SQL支持的索引(:with => :active_record),那么它是单行代码:

has agency.group_agencies.agency_group.id, :as => :agency_group_ids

如果您使用的是实时索引,那么您需要在Advertisement中使用一种方法来返回所有这些ID:

def agency_group_ids
  agency.agency_group_ids
end

您的属性定义将如下所示:

has agency_group_ids, :type => :integer, :multi => true

第2步:因为您已经更改了索引结构,所以请不要忘记重建索引:

# for SQL-backed indices:
rake ts:rebuild
# or, for real-time indices
rake ts:regenerate

步骤3:在您的控制器中,找到给定令牌的代理商组:

agency_group = AgencyGroup.find_by :token => params[:token]

第4步:最后,在搜索电话中使用该代理商组的ID:

@results = Advertisement.search Riddle::Query.escape(params[:search]),
  :star     => true,
  :page     => params[:page],
  :per_page => 6,
  :with     => {:agency_group_ids => agency_group.id}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4 ActiveRecord过滤器

来自分类Dev

Rails 4站点范围的过滤器记录

来自分类Dev

rails 3.2模型转换为rails 4

来自分类Dev

在Rails 4中更新模型

来自分类Dev

Rails 4:始终对特定模型字段使用Postgres函数

来自分类Dev

Rails 4:始终对特定模型字段使用Postgres函数

来自分类Dev

rails 4 datetime字段上的date方法

来自分类Dev

Heroku上的Rails 4 + Memcached

来自分类Dev

Sendgrid在Rails 4上建立

来自分类Dev

Rails 4上的基础模板

来自分类Dev

Rails 4-设计,访客用户导致过滤器链停止

来自分类Dev

Activeadmin定制过滤器和定制索引记录的范围Rails 4

来自分类Dev

带有Ransack的Active Admin Rails4自定义过滤器

来自分类Dev

Rails 4处理过滤器的方式是什么?

来自分类Dev

Rails 4:使用标签过滤

来自分类Dev

使用Rails 4在模型之间共享验证

来自分类Dev

使用Ransack Rails 4搜索多个模型

来自分类Dev

使用Rails 4在模型之间共享验证

来自分类Dev

如何使用Rails 4设置嵌套模型

来自分类Dev

使用隐藏字段Rails 4验证确认

来自分类Dev

如何在Rails 4上使用Ajax?

来自分类Dev

Rails 4返回与多个用户相关的任务

来自分类Dev

rails:rails的条件4

来自分类Dev

rails:rails的条件4

来自分类Dev

Rails 4 / postgresql索引-我应该使用可以包含无限多个值的datetime列作为索引过滤器吗?

来自分类Dev

Rails 4,rspec 3:模型验证测试

来自分类Dev

带有验证的Rails 4 Tableless模型

来自分类Dev

每个模型的Rails 4数据库

来自分类Dev

rails 4在渲染之前隐藏模型属性