Я хочу создать объект (скажем Y) другой модели, как только будет создан объект (скажем, X) одной модели. Объект Y должен принимать некоторые атрибуты объекта X, который был создан. Таким образом, метод after_save должен иметь код, эквивалентный New Y (Object X). Я сомневаюсь, как передать объект X в качестве параметра для вызова New().как передать параметр after_save
0
A
ответ
0
Вы всегда можете создать Y, а затем присвоить значения его свойств, а затем вызвать сохранить на Y.
def after_save_func
y = y.new
y.val1 = self.val1
y.val2 - self.val2
y.save
end
Но этот метод будет вызываться после каждого сохранения, который, кажется, не так больше похоже after_create бы лучший?
0
Я не уверен, что нижеследующий код, который я написал в конце концов, является хорошим решением по стандартам дизайна или нет. Но это, кажется, работает для моих требований:
def create_wc
Workcategory.delete_all(rfsestimationid: self.id)
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Analysis"
@workcategory.hours = self.rfstaskset.analysis_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Design"
@workcategory.hours = self.rfstaskset.design_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Test"
@workcategory.hours = self.rfstaskset.test_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_Build"
@workcategory.hours = self.rfstaskset.test_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_UATSupport"
@workcategory.hours = self.rfstaskset.UATSupport_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
@workcategory = Workcategory.new()
@workcategory.name = self.name + "_" + "#{self.number}" + "_DepSupport"
@workcategory.hours = self.rfstaskset.DepSupport_hours
@workcategory.rfsestimationid = self.id
@workcategory.save
end
В workcategory объекты удаляются каждый раз, родительский объект обновляется и восстановлен в коде выше. Этот код выполняется как операция after_save.
Смежные вопросы
- 1. Rails Как передать параметры с контроллера на after_save внутри модели
- 2. Как запустить resque after_save
- 3. Как передать параметр селектору?
- 4. Как передать параметр IUPnPService.InvokeAction?
- 5. как передать параметр @Payload
- 6. Как передать дополнительный параметр
- 7. Как передать параметр usort()?
- 8. Как передать параметр Reportviewer?
- 9. Как передать параметр html?
- 10. Как передать параметр HEREDOC?
- 11. Как передать параметр по
- 12. Как передать параметр JsonSerializer?
- 13. Как передать параметр маршрутам?
- 14. Как передать параметр `_T()`?
- 15. Как передать параметр сервлету
- 16. как передать параметр Sql
- 17. Как передать параметр мастеру
- 18. Как передать параметр IValueConverter?
- 19. Как передать параметр метода?
- 20. Rspec after_save
- 21. Как передать свойство как параметр
- 22. Как передать AttributeSet как параметр
- 23. Как передать параметр express.js Router?
- 24. Как передать параметр функции обещания
- 25. Как передать параметр через link_to?
- 26. CakePHP как передать параметр контроллеру?
- 27. Как передать параметр значения DateTime?
- 28. Sidekiq: передать объект как параметр
- 29. Как передать дополнительный параметр UITapGestureRecognizer?
- 30. Как передать параметр в суперкласс?
ya это так просто. немой. но почему это не работает после каждого сохранения? –
Вы чувствуете, что создаете новый объект для каждого сохранения? Что, если объект будет сохранен 5 раз, тогда у вас будет 5 объектов Y для объекта 1 X. Но, возможно, это имеет смысл для ваших случаев использования. – sdla4ever
ya спасибо, что указали это. Еще одна проблема, о которой я могу сейчас подумать, - изменить значения атрибутов нового объекта, если значения родительского объекта изменяются? –