Size: a a a

Ruby, Rails, Hanami | dry-rb

2020 February 03

k

kolas in Ruby, Rails, Hanami | dry-rb
ну ты всякие guard/if тогда будешь держать отдельно и другую бизнес логику отдельно
источник

MC

Mikhail Churakov in Ruby, Rails, Hanami | dry-rb
kolas
мне кажется что это бизнес логика, а ее лучше держать отдельно в интеракторах/операциях
где то нужно хранить валидацию для этой логики, а значит её придётся реализовать
источник

k

kolas in Ruby, Rails, Hanami | dry-rb
как хочешь, но мне это представляется не удобным
источник

MC

Mikhail Churakov in Ruby, Rails, Hanami | dry-rb
в итеракторе или какой другой модели - делать всё равно это придётся
источник

E

Evgeny in Ruby, Rails, Hanami | dry-rb
Igor Morozov
не должно
Не аасм, а гавно тогда 🙂
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
Evgeny
class Human < ApplicationRecord
 enum status: {alive: 0, dead: 1}
 aasm column: :status, enum: true do
   state :alive, :dead

   event :dead do
     transitions from: :alive, to: :dead
     after do
       puts "cry when people die"
     end
   end
 end
end

human = Human.last
human.alive?
# => true
human.status = :dead
human.save

Должно ли напечатать “cry when people die” ?

Тут в 2 раза больше в онлайне, копипастну сюда
🙂
Event – это глагол. Лучше назвать kill. Оно уже приводит к состоянию dead
источник

VK

Vasya Kuzmik in Ruby, Rails, Hanami | dry-rb
Pavel Tkachenko
Event – это глагол. Лучше назвать kill. Оно уже приводит к состоянию dead
Это dsl либы
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
Vasya Kuzmik
Это dsl либы
Нет
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
назвать event можно как угодно
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
И вообще как сказали выше, проще, легче в тестировании и поддержке вынести в отдельные интерактор/операцию/транзакцию

Удобно с dry-monads
operation = Operations::Humans::Kill.new
result = operation.call
case result
when Sucess
 #…
when Failure(:some_specific_error)
 #…
when Failure # other errors
 #…
end
источник

E

Evgeny in Ruby, Rails, Hanami | dry-rb
Да меня интересовало не как назвать, а умеет ли aasm трекать ивенты, когда делаешь обычный .save или обычный апдейт через форму, которая скаффолдом сделана.
Оказалось, что нет.
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
Evgeny
Да меня интересовало не как назвать, а умеет ли aasm трекать ивенты, когда делаешь обычный .save или обычный апдейт через форму, которая скаффолдом сделана.
Оказалось, что нет.
after_all_transitions :log_status_change
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
и пишешь свой метод
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
источник

E

Evgeny in Ruby, Rails, Hanami | dry-rb
Тогда это не будет ничем отличаться от простого коллбека )
источник

E

Evgeny in Ruby, Rails, Hanami | dry-rb
в котором я напишу
if

elsif

else

end
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
вся логика внутри операций, никаких колбэков. обработка результа в контроллере, чтобы редиректнуть, вывести ошибку и тд
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
колбэки приведут к коллбэк-hell,  проходили
источник

PT

Pavel Tkachenko in Ruby, Rails, Hanami | dry-rb
большое приложение и написание тестов станет адом
источник

ND

Nikita Didenko in Ruby, Rails, Hanami | dry-rb
Нид хелп) Есть едпоинт, который отдает csv файл, файл начинает генритьсяв момент запроса на эндпоинт, так как данных очень много, время генерации csv файла на 60000 строк занимает до 30 секунд. Все это время юзер ждет
источник