所以我发现自己需要在 gitlab 问题模型中添加一个“自定义”字段(外部票证引用)。
不是一个 ruby 人,我一直在努力解决这个问题,到目前为止,但已经撞到了砖墙。
我添加了一个迁移文件
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
rails 控制台中的属性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。
谢谢
最佳答案
所以,我最终解决了它。
创建一个名为/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
柱子
关于ruby-on-rails - hacking gitlab - 在问题模型中添加一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43812371/