0

may_run?AASMでは、AASM のサンプル コードで as を呼び出すことができます。

物体:

class Job
  include AASM

  aasm do
    state :sleeping, :initial => true
    state :running, :cleaning

    event :run do
      transitions :from => :sleeping, :to => :running
    end

    event :clean do
      transitions :from => :running, :to => :cleaning
    end

    event :sleep do
      transitions :from => [:running, :cleaning], :to => :sleeping
    end
  end

end

job = Job.new
job.sleeping? # => true
job.may_run?  # => true
job.run
job.running?  # => true
job.sleeping? # => false
job.may_run?  # => false
job.run       # => raises AASM::InvalidTransition

may_オブジェクトとアクションをパラメーターとして渡す場合、アクションをテストするヘルパーを作成するにはどうすればよいですか。基本的に、次のようなヘルパーを使用して、メソッド呼び出しにプレフィックスを追加したいと考えています。

def state_action_url(job, state)
   if job.may_state?
      #link_to action
   else
      #render disabled link text
   end
end
4

1 に答える 1

2

次のように使用できます。

def state_action_url(job, state)
   if job.public_send("may_#{state}?")
      #link_to action
   else
      #render disabled link text
   end
end
于 2016-03-31T17:09:47.057 に答える