如何让aasm事件返回布尔值以外的值?我正在使用aasm 2.2.0
E.g。有一个MusicPlayer模型,可以在启动时随机播放歌曲
aasm_state :started, :after_enter => :play_song
aasm_state :stopped
aasm_event :start do
:transitions :from => :stopped, :to => :started
end
def play_song
# select and play a song randomly and return the song object
end
现在,如果我想在启动播放器时返回当前播放的歌曲,我该如何通过'play_song'方法进行播放?
答案 0 :(得分:0)
你做不到。返回状态用于指示转换是否是可疑的。但我很好奇你有什么用例你需要它。
但是你可以包装状态转换并使用由play_song
方法设置的变量,如下所示:
aasm_state :started, :after_enter => :play_song
aasm_state :stopped
aasm_event :start do
:transitions :from => :stopped, :to => :started
end
def play_song
# select and play a song randomly
@song = ...
end
def shuffle
if start
@song
end
end