问题: 我正在将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的了解不足以回答如何设置价值。
答案 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