Redmine - Ruby - 寻找自定义字段的值

时间:2010-07-09 19:26:38

标签: ruby redmine ruby-on-rails

我检查了IRC的redmine并且无法获得帮助。 我在天气方面存在冲突,无法在超级用户,ServerFault或此处使用,但由于我的问题在技术上是面向编程的,所以我决定在这里寻求帮助。

我们有一个Mercurial存储库系统,其布局基于满足我们需求的项目。我编写了一些shell脚本,这些脚本可以很好地管理存储库并将它们放在正确的位置等。我正在尝试调用这些脚本并从Redmine传递它们的参数。我正在编辑app / controllers / projects_controller.rb(第75行 - > 87)

我已设法提取项目参数和当前用户,但我添加了两个自定义字段(使用Redmine管理中的自定义字段),我正在尝试访问这些自定义字段的值。有谁知道我怎么能得到这些?

我目前的工作测试声明如下:

 system "echo '#{@project.identifier}, #{User.current}' >> /tmp/rm.log"

2 个答案:

答案 0 :(得分:3)

使用CustomField模型。例如,

  # Find the first Custom Field
  cf = CustomField.first
  # Get the name
  puts cf.name
  # Find out if this Custom Field is for all projects
  cf.is_for_all?
  # If not, find out which projects are using it
  cf.projects

为了解决这个问题,我刚安装了Redmine-1.0.0并在源代码和脚本/控制台中进行了调整。

答案 1 :(得分:1)

use DBI;

$dbServer='';
$user='';
$pass='';
$ident=$ARGV[0];

my $dsn = "dbi:mysql:database=redmine;host=$dbServer;port=3306";
my $dbh = DBI->connect($dsn, "$user","$pass") or die "Can't connet to the Database: $DBI::errstr\n";
my $sth = $dbh->prepare("SELECT value FROM custom_values c INNER JOIN projects p ON c.customized_id=p.id WHERE p.identifier='$ident' LIMIT 1");
$sth -> execute();
my @row=$sth->fetchrow_array();
my $serverParams=@row[0];

调用上面的脚本(而不是在原文中回显),然后传入我们已经拥有的项目标识符,可以以任何方式使用自定义参数。这个代码可以抓取一个自定义字段(我只使用一个。)