0

Ruportを使用して同じエンティティを含むエンティティのCSVファイルを作成すると、生成された列名によって競合が発生し、Ruportはこの列の最初の出現のみを表示します。この抽象的な説明をより明確で複雑さを少なくするために、例:

私のクラスはZoneから継承します。ServerUnitConfigこれには:belongs_toからがありServerUnitます。たとえば、フィールドとして Zone持っています。forもあり、これも。から継承します。server_unit.su_nameZone:belongs_toDomainServerUnitConfig

私は両方を私のRuportに含めたいのですが、これを行うには、 Ruport:includeについて次のような議論がreport_tableあります。

{            
    :server_unit => {:only => 'su_name'}, 
    :domain => {:include => {:server_unit => {:only => 'su_name'}}, :only => {}
}

これをRuportを使用してCSVファイルで報告すると、の列ではなく、のserver_unit.su_name列のみが表示されるレポートが得られます。通常はも表示されますが、Ruportはフィールド名とその親のみを表示するため、どちらの場合も表示され、これにより競合が発生します。server_unitDomainserver_unit.su_nameserver_unit.su_name

インクルードのフィールドにカスタム名を付けることをお勧めしますが、方法がわかりません。もう1つのアイデアは、可能であれば、Ruportにいずれかの方法で同じ列名を使用しても問題がないことを伝えることですが、それは不可能だと思います。この問題を解決するアイデアはありますか?それは私に大いに役立つでしょう!

ありがとう

ダーン

4

1 に答える 1

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のメインリポジトリに配置してみます。

お役に立てば幸い、アンドリュー

于 2011-06-30T23:21:52.737 に答える