2010-07-09 55 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