Я начал работать над плагином для redmine, который позволит мне связать контакт QuickBook Online (QBO) с проблемой.Redmine Добавление пользовательского поля выбора
Я создал таблицу для контактов, в которой хранится только имя для каждого контакта qbo.
Я также добавил миграции, чтобы добавить ссылку на qbo_contact к вопросам
class UpdateIssues < ActiveRecord::Migration
def change
add_reference :issues, :qbo_customer, index: true
end
end
Проблема, которую я имею что когда вопрос редактируется, пользователь может выбрать QBO контакт. Когда пользователь сохраняет проблему, проблема не обновляется.
Я чувствую, что это, возможно, что-то делать с коробкой отбора формы
Пожалуйста посоветуйте
class QboHookListener < Redmine::Hook::ViewListener
# Edit Issue Form
# Show a dropdown for quickbooks contacts
def view_issues_form_details_bottom(context={})
selected = ""
# Check to see if there is a quickbooks user attached to the issue
if not context[:issue].qbo_customer_id.nil? then
selected = QboCustomers.find_by_id(context[:issue].qbo_customer_id).name
end
# Generate the drop down list of quickbooks contacts
select = context[:form].select :qbo_customer_id, QboCustomers.all.pluck(:name, :id), include_blank: true, selected: selected
return "<p>#{select}</p>"
#TODO save selection to Issues.qbp_customer_id
end
end
Если вам нужно больше, я разделил свою работу на github
Причина может быть в белом/черном списке атрибутов. Redmine имеет собственную логику ('safe_attributes'), чтобы определить, какие атрибуты могут быть изменены (например,' attr_accessible' в ядре Rails). Посмотрите на [этот код] (https://github.com/redmine/redmine/blob/3.2-stable/app/models/issue.rb#L401-L437) (Redmine 3-2 stable), ядро Redmine определяет допустимые атрибуты Вот. Я полагаю, вы должны добавить свой атрибут ('qbo_customer_id') в этот список. Конечно, вы должны сделать это в своем подключении не в исходной модели 'issue'. – gotva
Это была именно эта проблема. Спасибо! Теперь мне просто нужно выяснить, как добавить safe_attribute в модель через мой плагин ... –