如何从使用state_machine转换为assm?Rails应用

詹姆斯·罗基

我有使用state_machine gem编写的代码,但是如何使用assm gem编写等效的代码?

 state_machine :state, initial: :pending do
        after_transition on: :accept, do: :send_acceptance_email

        state :requested

        event :accept do
            transition any => :accepted
        end
    end

接受友谊请求后怎么办

def self.request(user1, user2)
      transaction do
        friendship1 = create!(user: user1, friend: user2, state: 'pending')
        friendship2 = create!(user: user1, friend: user2, state: 'requested')

        friendship1.send_request_email
        friendship1

      end
    end


    def send_request_email
        UserNotifier.friend_requested(id).deliver
    end

    def send_acceptance_email
        UserNotifier.friend_accepted(id).deliver 
    end

User.rb

has_many :friends, through: :user_friendships,
                       conditions: { user_friendships: { state: 'accepted' } }

    has_many :pending_user_friendships, class_name: 'UserFriendship',
                                        foreign_key: :user_id,
                                        conditions: { state: 'pending' }

    has_many :pending_friends, through: :pending_user_friendships, source: :friend
阿塔尔

您需要在模型中包括这条线

include AASM

#尽管我一直将状态用作状态机的列,但是您也可以尝试将状态用作所使用的列。希望这不会成为问题。

aasm column: 'state', initial: :pending, whiny_transitions: true do
  state :requested # im not seeing any event which set this state
  state :accepted

  #if you want an to trigger request event from any state simply add this
  event :request,   after: Proc.new { send_request_email }       do transitions to: :requested end


  #if you want to trigger accepted state from any state do this
  event :accept,   after: Proc.new { send_acceptance_email }       do transitions to: :accepted end

  #if you want to trigger accepted state from only requeste state
  event :accept,   after: Proc.new { send_acceptance_email }      do transitions from: :requested,   to: :accepted  end

end

如果您不喜欢异常,而希望使用简单的true或false作为响应,请告诉AASM不要抱怨:

:whiny_transitions => false

参考:https : //github.com/aasm/aasm

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Rails应用程序中使用state_machine gem触发事件

来自分类Dev

使用state_machine更改费用的状态

来自分类Dev

Rails state_machine过渡导致密码验证错误

来自分类Dev

How to trigger an event using state_machine gem in a Rails application

来自分类Dev

Rails state_machine过渡导致密码验证错误

来自分类Dev

如何使用Ruby`state_machine` gem获得给定状态之前的状态列表?

来自分类Dev

如何使用Ruby`state_machine` gem获得给定状态之前的状态列表?

来自分类Dev

如何在关注中定义state_machine?

来自分类Dev

过渡时的state_machine验证

来自分类Dev

CanCan和state_machine的问题

来自分类Dev

如何使用rspec测试assm Guard错误?

来自分类Dev

如何为state_machine过渡回调编写rspec测试

来自分类Dev

如何为state_machine过渡回调编写rspec测试

来自分类Dev

rails 4中的state_machine不正确地初始化状态列值

来自分类Dev

Rails:如何使用Rails应用程序转换引导模板?

来自分类Dev

state_machine更新另一个模型

来自分类Dev

如何转换XML文件以在Rails应用程序中使用?

来自分类Dev

状态机Gem + Rails 4:#<Class:0x007faffc93fd60>的未定义方法`state_machine'

来自分类Dev

如何将带有Devise的Rails应用程序转换为OAuth提供程序?

来自分类Dev

如何将erb中的Rails整个应用程序转换为haml

来自分类Dev

如何使用jQuery Datepicker在Ruby on Rails应用程序中发送到服务器之前将时间转换为UTC

来自分类Dev

如何转换R!使用purrr将data.frame转换为键/值列表或应用

来自分类Dev

大礼包状态的state_machine中的“ next”在哪里?

来自分类Dev

在state_machine gem上持久化之前进行验证

来自分类Dev

如何将我的javascript AngularJS应用控制器转换为使用Typescript?

来自分类Dev

如何使用insertUI在Shiny应用程序中将textInput转换为输出

来自分类Dev

如何将红宝石中的UTC时间转换为EST(不使用Rails)?

来自分类Dev

如何将使用Active Storage上传的pdf转换为Rails中的图像

来自分类Dev

如何将我的代码(this.state)转换为useState()?

Related 相关文章

  1. 1

    如何在Rails应用程序中使用state_machine gem触发事件

  2. 2

    使用state_machine更改费用的状态

  3. 3

    Rails state_machine过渡导致密码验证错误

  4. 4

    How to trigger an event using state_machine gem in a Rails application

  5. 5

    Rails state_machine过渡导致密码验证错误

  6. 6

    如何使用Ruby`state_machine` gem获得给定状态之前的状态列表?

  7. 7

    如何使用Ruby`state_machine` gem获得给定状态之前的状态列表?

  8. 8

    如何在关注中定义state_machine?

  9. 9

    过渡时的state_machine验证

  10. 10

    CanCan和state_machine的问题

  11. 11

    如何使用rspec测试assm Guard错误?

  12. 12

    如何为state_machine过渡回调编写rspec测试

  13. 13

    如何为state_machine过渡回调编写rspec测试

  14. 14

    rails 4中的state_machine不正确地初始化状态列值

  15. 15

    Rails:如何使用Rails应用程序转换引导模板?

  16. 16

    state_machine更新另一个模型

  17. 17

    如何转换XML文件以在Rails应用程序中使用?

  18. 18

    状态机Gem + Rails 4:#<Class:0x007faffc93fd60>的未定义方法`state_machine'

  19. 19

    如何将带有Devise的Rails应用程序转换为OAuth提供程序?

  20. 20

    如何将erb中的Rails整个应用程序转换为haml

  21. 21

    如何使用jQuery Datepicker在Ruby on Rails应用程序中发送到服务器之前将时间转换为UTC

  22. 22

    如何转换R!使用purrr将data.frame转换为键/值列表或应用

  23. 23

    大礼包状态的state_machine中的“ next”在哪里?

  24. 24

    在state_machine gem上持久化之前进行验证

  25. 25

    如何将我的javascript AngularJS应用控制器转换为使用Typescript?

  26. 26

    如何使用insertUI在Shiny应用程序中将textInput转换为输出

  27. 27

    如何将红宝石中的UTC时间转换为EST(不使用Rails)?

  28. 28

    如何将使用Active Storage上传的pdf转换为Rails中的图像

  29. 29

    如何将我的代码(this.state)转换为useState()?

热门标签

归档