ruby-on-rails - 如何在 AASM 中设置州级 guard

标签 ruby-on-rails aasm

有没有办法定义在任何情况下在进入状态(例如 has_legs? )之前检查的守卫(例如 running )?

在所有可能的回调列表中,有事件和转换的守卫,但没有事件的守卫。

我试图对模型进行条件验证。它适用于事件执行,但不适用于 aasm 方法(例如 may_run? )。

最佳答案

我不知道内置方法。我将使用包含默认选项的哈希的解决方法。

DEFAULT_EVENT_OPTS = { guard: ... }
DEFAULT_TRANSITION_OPTS = { ... }

event :clean, DEFAULT_EVENT_OPTS.merge({ ... }) do
  transitions DEFAULT_TRANSITION_OPTS.merge({:from => :running, :to => :cleaning, :guard => :cleaning_needed?})
end

关于ruby-on-rails - 如何在 AASM 中设置州级 guard ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38690087/

相关文章:

ruby-on-rails - 工作线程中的 sidekiq Perform_in(delay) 会忽略延迟

ruby-on-rails - 如何仅在 aasm 中为特定转换设置回调?

ruby-on-rails - 传递给 Controller ​​的模型 Rub​​y Rails 验证失败

mysql - 使用大写 ID 从 Rails 应用程序保存 MYSQL 数据库中:Mysql2::Error: Field 'ID' 没有默认值

ruby-on-rails - 在克隆上创建新的 Rails 5 凭据

ruby-on-rails - 使用 AASM 的 ActiveRecord 模型上的 delayed_job - 吞下失败的方法错误,而是抛出 "wrong number of arguments"

ruby-on-rails - Rails 中初始化程序多久运行一次?

ruby-on-rails - 如何配置 Rails 以始终以 utc 格式将日期时间序列化为 json?

ruby - 有没有办法用 aasm gem 保存状态历史?

ruby-on-rails - 在 Rails 中取消预定的 Sidekiq 作业