【问题标题】:Redmine - Ruby - Looking for the value of a custom fieldRedmine - Ruby - 寻找自定义字段的值
【发布时间】:2010-07-09 19:26:37
【问题描述】:

我检查了 IRC 的 redmine,但无法获得帮助。 我在天气上发生冲突,无法将其粘贴在 Superuser、ServerFault 或此处,但由于我的问题是面向技术编程的,我决定在这里寻求帮助。

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

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

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

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

【问题讨论】:

    标签: ruby redmine ruby-on-rails


    【解决方案1】:

    使用 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 并在源代码和脚本/控制台中四处寻找。

    【讨论】:

    • 我设法解决了。我相信上述方法可行,但我最终只是从 Perl 脚本中访问 Redmine MySQL 数据库,以使用标识符获取数据以查找项目 ID,然后通过内部连接查找自定义字段。明天早上我会为 Kriss 发布代码,因为他对这个问题很感兴趣。
    【解决方案2】:
    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];
    

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

    【讨论】:

    • 谢谢。我还有一些事情要解决,但这给了我一个开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多