小编ejl*_*in1的帖子

Rabl多模型系列

我使用RABL输出Sunspot/SOLR结果集,搜索结果对象由多个模型类型组成.目前在Rabl视图中我有:

object false

child @search.results => :results do
  attribute :id, :resource, :upccode
  attribute :display_description => :description

  code :start_date do |r|
    r.utc_start_date.to_i
  end

  code :end_date do |r|
    r.utc_end_date.to_i
  end

end

child @search => :stats do
  attribute :total
end
Run Code Online (Sandbox Code Playgroud)

以上适用于单一型号; 但是,当多个模型类型在@ search.results集合中时,它会失败,因为这两个类没有相同的实例方法.有谁知道如何根据类型拥有不同的属性?最终,根据对象的类型有条件地在结果集合中扩展不同的模板会很好.像下面的伪代码:

child @search.results => :results do |r|
  if r.class == Product
    extends "product/base"
  else
    extends "some other class base"
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rabl

6
推荐指数
1
解决办法
3066
查看次数

标签 统计

rabl ×1

ruby ×1

ruby-on-rails ×1