На мой взгляд у меня есть выпадающий список people
в пределах organisation
, которому может быть назначен билет.Проверка нулевого значения с использованием: before_save
<label for="assigned_support_id">Assigned To</label>
<%= select("ticket", "assigned_support_id", Person.find_admin_and_support.collect {|p| ["#{p.name}", p.id]}, {:include_blank => "< Unassigned >"}) %>
Поскольку пустая строка, вставленная выше, не имеет значения, если этот параметр выбран, билет останется назначенным одному и тому же лицу.
Я рассмотрел создание «Нераспределенные» человека в базе данных, но это, вероятно, будет довольно сложным, имея, что «человек» относится к каждой организации ....
Я также рассматривал возможность использования JavaScript для управления DOM и придать ему значение, но я хотел бы сделать это «Rails Way», поэтому я придумал следующее:
ticket.rb
before_save :check_unassigned
...
private
def check_unassigned
if self.assigned_support_id.nil? or defined?(self.assigned_support_id)
self.assigned_support_id = 0
end
end
nil
CHEC k, похоже, ничего не сделал, поэтому я добавил defined
, но проблема в том, что каждый раз, когда я переназначаю билет другому пользователю, таблица будет обновляться с 0
, поэтому что-то не так, и я не уверен, что это за ошибка.
Я также рассмотрел вопрос об обновлении метода update
в своем контроллере, проверив [: params] [: assign_support_id], но считал, что это вышеописанное решение.
можно непосредственно использовать 'self.assigned_support_id || = 0 '(если' self.assigned_support_id' является 'nil' он будет установлен в ноль) и вам не нужно тестировать .nil? и определяется? – MrYoshiji
спасибо, он почти работает, ведет себя правильно при переходе от неназначенного к назначенному человеку, но при переходе от назначенного к неназначенному значение db не заполняется 0. – martincarlin87
Почему вы не хотите использовать 'nil' в своей базе данных? – ctilley79