私はタイヤで 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 と埋め込まれたドキュメントを含むタイヤの例を探していましたが、運がなく、アイデアが不足しています。
アイデアや貢献に感謝します。