3

私はタイヤで ElasticSearch を使用してモンゴイド モデルのインデックス作成と検索を行っています。また、埋め込まれたアソシエーションのインデックス作成と検索を行う「正しい」方法を探していました。このモデル用に完全に機能するように設定しましたが、何らかの理由で、埋め込みモデル (ResourceTag) のフィールドを除くすべてを検索できます。

不要なコードを削除

class Resource
  include Mongoid::Document
  include Tire::Model::Search
  include Tire::Model::Callbacks
  include Mongoid::Timestamps

  embeds_many :tags, :class_name => "ResourceTag"

  accepts_nested_attributes_for :tags, :allow_destroy => true

  # Tire
  mapping do
    indexes :_id
    indexes :version,             analyzer: 'snowball', boost: 100
    indexes :created_at,          type: 'date', index: :not_analyzed
    indexes :updated_at,          type: 'date', index: :not_analyzed    
    indexes :assignment do
      indexes :_id
      indexes :name,                analyzer: 'snowball', boost: 100
      indexes :current_state,                analyzer: 'snowball', boost: 100
    do
    indexes :resource_files do
      indexes :_id
      indexes :name,                analyzer: 'snowball', boost: 100
    end
    indexes :tags do
      indexes :_id
      indexes :name,                analyzer: 'snowball', boost: 100
    end
  end

  def to_indexed_json
    self.to_json(
      :include => {
        :assignment => {
          :methods => :formatted_current_state
        }, 
        :resource_files => {
          :methods => [:is_video, :is_image]
        },
        :tags => nil
      }
    )
  end
end

class ResourceTag
  include Mongoid::Document

  # Attributes
  attr_accessible :name

  # Fields
  field :name, :type => String

  # Validations
  validates_presence_of :name
  validates_uniqueness_of :name, :case_sensitive => false

  # Relations
  embedded_in :resource

 end

自分のコードの何が問題なのかよくわかりませんが、以前は機能していたのに、今はめちゃくちゃになってしまったのは確かです :s

私は mongoid と埋め込まれたドキュメントを含むタイヤの例を探していましたが、運がなく、アイデアが不足しています。

アイデアや貢献に感謝します。

4

0 に答える 0