2010-07-09 21 views
2

我检查了redmine的IRC,无法获得帮助。 我在天气上发生冲突,坚持超级用户,ServerFault或这里,但由于我的问题是技术上面向编程导向,我决定在这里寻找帮助。Redmine - Ruby - 寻找自定义字段的值

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

我设法拉出项目参数和当前用户,但我添加了两个自定义字段(使用Redmine Administration中的自定义字段),我试图访问这些自定义字段的值。有没有人有任何想法如何我可以得到这些?

我目前的工作测试语句低于:

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

回答

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 

要弄清楚这一点,我刚安装了管理平台-1.0.0,并在源和脚本/控制台戳左右。

+0

我设法解决它。我相信上述工作,但我最终只是从Perl脚本中访问Redmine MySQL数据库,以使用标识符来获取数据以找到项目ID,然后通过innerjoin找到自定义字段。我会在明天早上发布代码,因为他投资了这个问题。 – 2010-07-19 04:22:44

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 [email protected][0]; 

调用上面的脚本(而不是在原来的呼应),然后传递中,我们已经拥有了项目标识,自定义参数可以以任何方式nessacary使用。这代码它抓住一个自定义字段(我只使用一个。)

+0

谢谢。我仍然有一些东西需要理清,但它给了我一个开始。 – kriss 2010-07-23 07:53:49