因此,我发现自己需要向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)
所以列就在那里。实际上,我可以在rails控制台中读写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,让我可以在这个字段上进行搜索。
谢谢
发布于 2017-05-08 15:04:00
所以,我最终解决了这个问题。
创建一个名为/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
列
https://stackoverflow.com/questions/43812371
复制相似问题