gpt4 book ai didi

ruby-on-rails - 有人可以为pluginaweek - statemachine 提供一个事件记录示例吗?

转载 作者:行者123 更新时间:2023-12-05 00:35:20 25 4
gpt4 key购买 nike

有人可以举一个简单的例子来说明如何使用pluginaweek state_machine对于具有事件记录的票证模型?
我不明白文档中的复杂示例。

示例说明:

  • 新 -> 接受、拒绝、反馈
  • 接受 -> 已解决或反馈
  • 反馈 -> 接受或解决
  • 最佳答案

    示例票证模型(未测试)

    class Ticket < ActiveRecord::Base
    attr_accessible :name, :description
    attr_accessible :state_event
    validates :name, :presence => true

    state_machine :initial => :new do

    event :accept do
    transition [:new, :feedback] => :accepted
    end

    event :decline do
    transition :new => :declined
    end

    event :feedback do
    transition [:new, :accepted] => :feedbacked
    end

    event :solve do
    transition [:accepted, :feedback] => :solved
    end
    end
    end

    以形式获取所有可能的过渡
    <%= f.collection_select :state_event, @ticket.state_transitions, :event, :human_to_name, :include_blank => @ticket.human_state_name %>

    获取票证状态: <%= ticket.state %>
    获取所有可能的工单转换链接:
    <% ticket.state_transitions.each do |transition| %>
    <%= link_to transition.event, ticket_path(ticket, ticket: {:state_event => transition.event}), :method => :put %>
    <% end %>

    列出所有可能的转换以在 Controller 中过滤
    <ul>
    <li class="<%= 'active' if params[:state].blank? %>"><%= link_to 'All', tickets_path %></li>
    <% Ticket.state_machine.states.each do |state| %>
    <li class="<%= 'active' if params[:state] == state.name.to_s %>">
    <%= link_to state.name, tickets_path(:state => state.name) %>
    </li>
    <% end %>
    </ul>

    class TicketsController extends ApplicationController
    ...
    def index
    @tickets = Ticket.where("state = ?", params[:state])
    ...

    关于ruby-on-rails - 有人可以为pluginaweek - statemachine 提供一个事件记录示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559702/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com