Примеры получения данных
Получение текущего пользователя
User.current
# Получение полного имени тек. пользователя
User.current.name
Проверка что текущий пользователь находится в конкретной группе
in_group?(group: Group | Symbol | string | integer) - проверка что пользователь состоит в группе group
# 1. Проверка по id группы
user.in_group?(1)
# 2. Проверка по названию группы
user.in_group?("Group name")
# 3. Проверка по коду группы
user.in_group?(:group_123)
# 4. Проверка по объекту группы
user.in_group?(Group.find(123))
Проверка что текущий пользователь является участником проекта с определенной ролью
has_role_in_project?(role: Symbol | string | integer, project: Project | string | integer) - является ли пользователь участников проекта (project) с ролью (role)
user.has_role_in_project?(:member, 'demo-project')
user.has_role_in_project?(2, 4)
user.has_role_in_project?('Member', Project.find('demo-project'))
Получение подзадач
# 1. Подзадачи первого уровня
# 1.1. Получение моделей подзадач
self.children
# 1.2. Получение IDs подзадач
self.child_ids
# 2. Получение всех подзадач
# 2.1. Получение моделей
self.descendants
# 2.2. Получение IDs
self.descendant_ids
Получение связей
# получение и обработка
work_package.relations.count
work_package.relations.visible.count
work_package.relations.blocks.count
work_package.relations.relates.each \{ ... \}
Получение родителя / родителей
# 1. Получение родительской задачи
self.parent
# 2. Получение всей цепочки родительских задач
self.ancestors
Получить статус, в котором была задача до перехода в текущий статус
# ID предыдущего статуса
old_status_id = self.status_id_was
# Предыдущий статус задачи
old_stutus = Status.find(self.status_id_was)
Метод, которые преобразует объект в json формат
# 1. Generate JSON
json_object = JSON.generate(\{ current_user: User.current.name \})
# 2. Parse JSON
object = JSON.parse!(json_object)
Получить список полей, которые изменились в момент выполнения триггера
# Список измененных полей (Спистемных + доп. полей)
changed_fields = self.all_changes