0

对于格式为单个 ActiveRecord 模型,我的轮胎工作正常

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

如果可能的话,我想在多个模型之间共享这些设置。我无法从初始化程序中找到任何方法。

我怎样才能做到这一点?

4

1 回答 1

4

鉴于 Ruby 的灵活性,这里有很多可用的选项。最明显的:

  1. 使用一个或多个模块常量/方法,将所需的设置/映射存储为散列,然后将它们传递给轮胎方法。

  2. 在模块中定义共享设置/映射/行为,然后您可以将其包含在模型中。该方法在轮胎/问题/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 回答