如何在Redmine中检查和设置自定义字段值?

时间:2019-06-16 17:13:52

标签: ruby-on-rails ruby query-builder redmine

问题: 我正在将CSV文件导入到用户。 我想为他们创建一个自定义字段“显示顺序”,如果模型用户存在这样的自定义字段,则将其填充。

我现在所做的事情:

order_field = CustomField.where(name: ["rank", "оrder"]).first
#loop
            u = User.new
            u.login = login
            u.firstname = firstname
            u.lastname = lastname
            u.admin = true if login == 'admin'
            u.status = true
            u.auth_source_id = 1 if !AuthSource.search(login).empty?
            u.type = 'User'
            u.mail = email
            u.mail_notification = Setting.default_language
            u.mail_notification = Setting.default_notification_option
            u.save!

            custom_value_exists = _________
       # x = u.custom_value_for(order_field) if order_field if custom_value_exists
       # >> <CustomValue id: 5926, customized_type: "Principal", customized_id: 4766, custom_field_id: 28, value: "11">
       # y = ________create____ if !custom_value_exists
#loop

但是,我对redmine的了解不足以回答如何设置价值。

1 个答案:

答案 0 :(得分:0)

获取: object.custom_field_value(field.id)

更新:

object.custom_field_values = {field.id => val} # Set new value
object.save_custom_field_values # Save

但是,它不适用于创造价值,因此通过object.custom_value_for(field.id).id?或...

检查记录是否存在

创建/更新: 简单。只需在更新代码之前添加一行object.custom_vield_values即可。它返回值列表,并触发创建空值。例子

u = User.find(1)
cf = CustomField.where('name', 'mobile phone').first
u.custom_field_values # returns values, triggers creation
u.custom_field_values = {cf.id = "+123456789"} # set value
u.save_custom_field_values # save

文档:rubydoc