更新
好的,所以我不再收到错误,但我没有收到任何结果(即使只有一个搜索选项)。
我在我的索引列表中添加了has子句:
define_index do
has bar_profiles(:day), :as => :days
indexes bar_profiles.budget, :as => :budget_tags
.
.
end
所以我的搜索是:
bars = Bar.search(search_options)
带
search_options = {:conditions=>{:budget_tags=>"LOW BUDGET"}, :with=>{:days=>"thursday"}, :page=>1, :per_page=>20}
bar_profiles包含预算,经验,代码,日等行。
Bar有很多bar_profiles(每天可能有1个)
我想要做的是使用思维狮身人面像搜索(在条形模型中)将用户选择的预算,经验,标签标准与bar_profile匹配,该bar_profile具有与“今天”匹配的日期(当天) )。
这是我要完成这个应用程序的最后一件事,我要拔掉头发,因为我找不到任何关于如何正确设置的例子......
如果您有任何见解请发布,任何有用的。感谢。
起初我认为我的问题类似于this并且有一个额外的抽象层,但我认为我的问题在于搜索选项而不是索引。
首先请允许我声明,我一直在尝试使用思维狮身人面像修复之前的“群体实施”。我终于让该项目完成了90%的工作,最后10%的交易是能够获得正确的过滤器进行检查。
以下是简要概述。该应用程序具有条形和bar_profiles(在连接到这些2和用户的许多其他表中,但它们不是必须了解此问题。)对于每个条形,每周的每一天都可以有bar_profile。
所以在bar_profile模型中有:
belongs_to :bar
并且在栏中有:
has_many :bar_profiles
后面是bar中的索引(由前一个开发人员编写):
define_index do
# name is a reserved keyword so we need to specify it as a symbol to work
indexes :name
indexes tags
indexes bar_profiles.day, :as => :day
indexes bar_profiles.tags, :as => :daily_tags
indexes bar_profiles.budget, :as => :budget_tags
indexes bar_profiles.experience, :as => :experience_tags
set_property :delta => true
end
我遇到的问题是这个当前的实现并没有将搜索正确地限制到当天。它不是检查条形图的当前天数,而是检查所有条形图。
所以我在方法开始时设置当前日期:
today = (Time.now + Time.zone_offset('EST')).strftime("%A")
然后我认为它需要像下面这样的东西。我引用this post by pat关于使用'with',但我不确定我是否搞乱语法(因为我收到错误):
search_options = {:conditions => {}, :with => {:day=>today}, :page => 1, :per_page => algorithm.results_per_page}
然后我使用这些搜索选项:
search_options[:conditions][:experience_tags] = options[:experience] unless options[:experience].blank?
budget = combine_budgets(options[:budget])
search_options[:conditions][:budget_tags] = budget unless budget.blank?
但是当我尝试运行搜索时,我在开发日志中得到了这个:
^^^^ ERROR! Reason: index bar_core,bar_delta: no such filter attribute 'day'
现在我对此非常困惑,因为如上所示设置了:day的索引......我不确定'filter属性'是否与index属性不同。如果有人能够对此提供一些见解,那将非常感谢(看着你@pat)。
这是这个应用程序的最后一个问题,所以如果有人能帮助我,我将非常感激。
谢谢,
艾伦