Не храните значение несколько раз - это redundant
и unnecessary
во всех случаях, кроме нескольких эзотерических.
В Ruby / Rails вы можете delegate
из задачи в проект для метода позиционирования, как этот (в вашей модели задачи):
delegate :position, :to => :project, :prefix => true, :allow_nil => true
Теперь у вас есть task.project_position
, который будет возвращать значение project.position через связь между ними, без дублирования этого элемента данных во всех задачах проекта.
Все это предполагает выполнение задачи belongs_to :project
(и, возможно, проекта has_many :tasks
).
более подробное объяснение.
Если вы чувствуете, что по какой-то причине вам действительно нужно идти по ненормализованному маршруту, тогда да, after_save будет подходящим местом для этого.