所以我承担了一个更大的项目,但不确定在哪里可以找到修改它的代码。我们有一个数据库,它被读取为 Essay -> Section -> figure,我们正在尝试添加一个名为“video_url”的新列。我相信这与非规范化有关,但我不完全确定。
这是论文模型:
class Essay
include ActiveModel::Model
include ActiveModel::Serialization
include Draper::Decoratable
include Import::HtmlEssay
include Searchable
FACETS = %w(author)
FULLTEXT_FIELDS = %w(title sections.title sections.body sections.figures.caption)
def self.define_mappings!
mapping mapping_options do
analyzer = I18n.locale == :tr ? :turkish : :snowball
indexes :author, index: :not_analyzed
indexes :publication_id, index: :not_analyzed
indexes :sequence, type: 'long'
indexes :title, analyzer: analyzer
indexes :sections do
indexes :title, analyzer: analyzer
indexes :body, analyzer: analyzer
indexes :figures do
indexes :caption, analyzer: analyzer
end
end
end
end
class Query
include Searchable::Query
def sort
[
{ publication_id: { order: 'asc'}},
{ sequence: { order: 'asc' }}
]
end
end
end
现在它只显示 [Mash caption, credit, figure(#), url]。我想将 video_url 附加到 Image 模型的一部分(我们从中提取 url),但是我不确定它是如何工作的并且遇到了麻烦。我认为他们正在使用的唯一相关宝石是 elasticsearch-model,但是我已经浏览了他们的一堆东西,但仍然不确定。
控制(虽然这里没有真正发生)如下:
class EssaysController < SearchBaseController
def show
@essay = Essay.find(params[:id]).decorate
end
end
老实说,即使你不知道答案,如果你能告诉我像“FULLTEXT_FIELDS”var 这样的东西来自哪里,那也会很有帮助,如果需要,我可以编辑它以添加其他代码部分。我只需要弄清楚如何将 video_url 列添加到结果中,它位于弹性搜索中,可以使用其他方法访问,但这里没有显示。