2017-05-05 65 views
2

所以我發現自己需要爲gitlab問題模型添加一個「自定義」字段(一個外部票證參考)。黑客gitlab - 在問題模型中添加一個字段

不是一個紅寶石的傢伙,我一直有點戰鬥,並已獲得迄今爲止,但已經擊中了一堵磚牆。

我添加了一個遷移文件

class AddExternalRefToIssues < ActiveRecord::Migration 
    def change 
    add_column :issues, :external_ref, :string 
    add_index :issues, :external_ref 
    end 
end 

,併成功地獲得通過運行這些命令

rm /var/opt/gitlab/gitlab-rails/upgrade-status/* 
gitlab-ctl reconfigure 

加載到數據庫中,我檢查了Postgres的表

id | [snip] | external_ref 
----+-------+-------------- 
    1 |  | 
(1 row) 

所以該列在那裏。事實上,正如我可以讀&寫在軌控制檯external_ref屬性

irb(main):018:0> i = Issue.find(1) 
=> #<Issue id: 1, title: "demo", ...[snip]..., external_ref: "123"> 

,但現在我在旁邊做什麼損失,因爲API調用api/v4/projects/1/issues/1返回

{"id":1,"iid":1,"project_id":1,"title":"demo",[snip] , "subscribed":true} 

即我external_ref場沒有顯示

我試圖黑客周圍,修改幾個文件像app/serializers/issue_entity.rb並添加expose :external_ref並重新啓動gitlab沒有效果

有人能指出我在正確的方向如何獲得&爲這個新的屬性值?

我也很感激有人告訴我如何添加一個允許我在這個領域進行搜索的api。

謝謝

+0

反向引用[相關GitLab問題(https://gitlab.com/gitlab-org/ gitlab-EE /問題/ 1906#note_28952232)。 – Wildcard

回答

0

所以,我終於搞定了。

創建/opt/gitlab/embedded/service/gitlab-rails/db/migrate/20170505102713_add_external_ref_to_issues.rb

與以下內容稱爲一個新的文件:

class AddExternalRefToIssues < ActiveRecord::Migration 
    def change 
    add_column :issues, :external_ref, :string 
    add_index :issues, :external_ref 
    end 
end 

進行以下更改

/opt/gitlab/embedded/service/gitlab-rails/lib/api/entities.rb

class IssueBasic < ProjectEntity 
    expose :external_ref 

/opt/gitlab/embedded/service/gitlab-rails/lib/api/entities。RB

params :issues_params do 
    optional :external_ref, type: String, desc: 'external reference' 

    params :issue_params do 
    optional :external_ref, type: String, desc: 'external reference' 

執行

rm /var/opt/gitlab/gitlab-rails/upgrade-status/* 
gitlab-ctl reconfigure 
gitlab-ctl restart 

,現在你可以寫入和讀取external_ref

相關問題