2012-04-06 4 views
0

[OK]をので、私は私が上で検索する必要がある日付フィールドを持っていますが、私が試した私は、mysqlのクエリでattr_accessorを使用するように検索するにはどうすればよいですか?

search_conditions << ["DAY(open_date) != ?", event.thursday.day] if options[:thur].blank? 

のような一日でそれを検索する必要があると私はスフィンクスを考えると、この条件を行う必要がありますこの

attr_accessor :event_day 

    def event_day 
    self.start_date.day 
    end 

    #thinking sphinx configurations for the event search 
    define_index do 
    indexes event_day 
    ... 
    ... 

とは、検索で、私はしかし、私はこのエラー

を得続けるこの

search_string = "@event_day -#{event.thursday.day}" unless options[:thur].blank? 

を試してみました

index event_core: query error: no field 'event_day' found in schema 

この作品

答えて

1

あなたはSQLクエリのルビー属性を使用することはできませんようにする任意の方法。 Railsはそれほど巧妙ではありません。

この関数を複製するSQLを記述するか、それを使ってクエリの結果をフィルタリングする必要があります。

@my_query.where(:a => "b").select { |rec| rec.some_method == "some value" } 
+0

私はこの日を返す方法を作成する – Trace

0

マイケルの指摘したように、Rubyの属性はSphinxからアクセスできません。これはあなたのデータベースに直接伝えられます。

したがって、イベントの日の値を保持する列を作成し、Sphinx経由で参照するか、SQL関数(MySQLまたはPostgreSQLによって異なる可能性があります)を使用するフィールドを作成することができます。 start_date列からの日 - 特に複雑ではありません。それはおそらくこのように見えるでしょう:

indexes "GET_DAY_FROM_DATE(start_date)", :as => :event_day