ruby-on-rails - 从另一个模型触发模型中的状态更改

标签 ruby-on-rails ruby

Rails 新手和学习如何使用 state machines.怎么让一个 Actor 的粉丝从哭状态变成哭状态?

class Actor < ApplicationRecord
  include AASM

  has_many :fans 

  aasm do
    state :laughing, :initial => true
    state :crying

    event :cry do
      transitions :from => :laughing, :to => :crying
    end
    event :laugh do
      transitions :from => :crying, :to => :laughing
    end
  end
end  

class Fan < ApplicationRecord
  include AASM

  belongs_to :author 

  aasm do
    state :laughing, :initial => true
    state :crying

    event :cry do
      transitions :from => :laughing, :to => :crying
    end
    event :laugh do
      transitions :from => :crying, :to => :laughing
    end
  end
end

最佳答案

您可以使用 lifecycle callbacks在 actor 上触发更多方法:

class Actor < ApplicationRecord
  include AASM

  has_many :fans 

  aasm do
    state :laughing, :initial => true
    state :crying, :success => :fans_cry_too

    # ...
  end

  private

  def fans_cry_too
    fans.each(&:cry)
  end
end

关于ruby-on-rails - 从另一个模型触发模型中的状态更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49526034/

相关文章:

ruby-on-rails - Heroku 的环境变量是存储敏感数据的安全方式吗?

javascript - jQuery 事件监听器未监听

ruby - 如何在 <br> 之后使用 Mechanize 提取文本

javascript - ExecJS - Ruby 中的 Javascript 对象实例?

ruby - factory_girl 和 sprintf

ruby-on-rails - 限制 json 结果的数量 - Rails API

ruby-on-rails - rails : controller won't update model correctly

ruby-on-rails - 安装 Ruby 时出错

ruby-on-rails - 何时以及为何应使用类和全局变量?

ruby-on-rails - 路由 root 以显示登录用户的用户帖子和未登录用户的静态页面