Ruport报告表中的列名冲突

时间:2011-06-28 08:31:21

标签: ruby-on-rails ruby report ruport

使用Ruport为包含相同实体的实体创建CSV文件时,生成的列名称会产生冲突,导致Ruport仅显示此列的第一个出现。为了使这个抽象的解释更清晰,更简单,例如:

我的班级Zone继承自ServerUnitConfig:belongs_toServerUnit。 因此,Zone具有server_unit.su_name字段作为字段。 Zone :belongs_toDomainServerUnitConfig也继承: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一个或另一个方法,拥有相同的列名是没有问题的,但我不认为这是可能的。有人有想法解决这个问题吗?这对我有很大的帮助!

由于

大安

1 个答案:

答案 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的主要仓库上,当我确定它没有问题时。

希望有所帮助, 安德鲁