Противоречивые имена столбцов в таблице отчетов Ruport - PullRequest
0 голосов
/ 28 июня 2011

При использовании Ruport для создания файла CSV для сущностей, содержащих одинаковые сущности, сгенерированные имена столбцов создают конфликты, в результате чего Ruport отображает только первый вхождение этого столбца (столбцов).Чтобы сделать это абстрактное объяснение более понятным и менее сложным, приведем пример:

Мой класс Zone наследуется от ServerUnitConfig, который имеет от :belongs_to до ServerUnit.Таким образом, Zone имеет, например, server_unit.su_name в качестве поля.Zone также имеет :belongs_to для Domain, который также наследуется от ServerUnitConfig.

Я хочу, чтобы оба были включены в мой Ruport, и для этого у меня есть следующий аргумент :include дляМой report_table из Ruport:

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

Сообщение об этом с помощью Ruport в CSV-файле дает отчет, показывающий только столбец server_unit.su_name из server_unit, а не столбец Domain.Обычно также должен отображаться server_unit.su_name, но поскольку Ruport отображает только имя поля и его родителя, в обоих случаях отображается server_unit.su_name, и это вызывает конфликты.

Я бы предложил присвоить полю произвольное имяв том числе, но я не знаю как.Другая идея, если это возможно, состоит в том, чтобы сказать Ruport тем или иным способом, что нет проблем иметь одинаковые имена столбцов, но я не думаю, что это возможно.У кого-нибудь есть идея решить эту проблему?Это очень мне поможет!

Спасибо

Даан

1 Ответ

0 голосов
/ 01 июля 2011

Вы можете использовать метод report_table_by_sql, который немного уродлив. Или используйте параметр: method для вызова метода с немного другим именем, что тоже не здорово.

Существует опция: qualify_attribute_names для каждого включения, которое использовалось внутри. Я написал патч здесь: https://gist.github.com/1057518, который выставит его, вы можете использовать его так:

{:server_unit => {:qualify_attribute_names => 'serv', :only => 'su_name'}}

Чтобы применить этот патч, вам нужно "продать" драгоценный камень act_as_reportable в Rails, что может быть неприятно. Я постараюсь поставить его в основной репозиторий на https://github.com/ruport/acts_as_reportable вскоре, когда буду уверен, что у него нет проблем.

Надеюсь, это поможет, Andrew

...