0

次の形式の単一の ActiveRecord モデルに対してタイヤが正しく動作しています。

setting do
  ...SETTINGS...
  mapping do
    ...INDEXES...
  end
end

可能であれば、これらの設定を複数のモデル間で共有したいと考えています。イニシャライザからそれを行う方法が見つかりません。

これどうやってするの?

4

1 に答える 1

4

Rubyの柔軟性を考えると、ここでは多くのオプションを利用できます。最も明白なもの:

  1. モジュール定数/メソッドまたは複数のものを使用して、必要な設定/マッピングをハッシュとして保存し、それらをTireメソッドに渡します。

  2. モジュールで共有設定/マッピング/動作を定義します。これをモデルに含めることができます。このアプローチは、tire / issues/481で詳しく説明されています。

関連するスニペット:

module Searchable

  def self.included(base)

    p "Included in #{base}"

    base.class_eval do
      include Tire::Model::Search

      tire do
        mapping do
          indexes :title,   type: 'string', analyzer: 'snowball'
        end
      end
    end
  end
end

class Article < ActiveRecord::Base
  include Searchable
end

class Person < ActiveRecord::Base
  include Searchable
end

これは実際にはイニシャライザーにある必要はありません。Railsアプリケーションからロード可能な任意の場所に配置できます。

于 2012-12-01T14:12:30.817 に答える