使用Ruport为包含相同实体的实体创建CSV文件时,生成的列名称会产生冲突,导致Ruport仅显示此列的第一个出现。为了使这个抽象的解释更清晰,更简单,例如:
我的班级Zone
继承自ServerUnitConfig
,:belongs_to
到ServerUnit
。
因此,Zone
具有server_unit.su_name
字段作为字段。
Zone
:belongs_to
也Domain
,ServerUnitConfig
也继承:include
。
我希望两者都包含在我的Ruport中,为此我对我的report_table
Ruport有{
:server_unit => {:only => 'su_name'},
:domain => {:include => {:server_unit => {:only => 'su_name'}}, :only => {}
}
个参数:
server_unit.su_name
使用CSV文件中的Ruport报告此内容,会生成报告,仅显示server_unit
的{{1}}列,而不是Domain
的列。通常也应显示server_unit.su_name
,但由于Ruport仅显示字段名称及其父级,因此两个案例都显示server_unit.su_name
,这会产生冲突。
我建议在include中为字段指定一个自定义名称,但我不知道如何。另一个想法,如果有可能的话,就是告诉Ruport一个或另一个方法,拥有相同的列名是没有问题的,但我不认为这是可能的。有人有想法解决这个问题吗?这对我有很大的帮助!
由于
大安
答案 0 :(得分:0)
你可以使用report_table_by_sql方法,这有点难看。或者使用:method选项调用名称略有不同的方法,也不是很好。
内部使用的每个包含都有:qualify_attribute_names选项。我在这里写了一个补丁:https://gist.github.com/1057518会暴露它,你可以这样使用它:
{:server_unit => {:qualify_attribute_names => 'serv', :only => 'su_name'}}
要应用补丁,您需要“供应”Rails中的acts_as_reportable gem,这可能很痛苦。我很快就会尝试把它放在https://github.com/ruport/acts_as_reportable的主要仓库上,当我确定它没有问题时。
希望有所帮助, 安德鲁