如何在Rails中分配优先级(一种优先级队列)?

时间:2014-06-05 06:42:53

标签: ruby-on-rails priority-queue

假设我有一张名为power-ups的桌子(我将以游戏为例)。

我需要根据用户的“优先级”为用户分配电源。

因此,当用户第一次登录时,他获得最低功耗(优先级为0的功能)。当用户通过一个级别时,他将获得下一级别的上电(优先级为1)。

这样做最直接的方法是拥有一个名为Priority的字段,可以在admin表中手动分配给0,1,2 ....并且将按照该顺序给出加电。

我想到的伪代码,希望它有所帮助:

if (level == 0) 
   find power_up where priority == 0
else if (level == 1)
   find power_up where priority == 1
..................

有更简单的方法吗?

1 个答案:

答案 0 :(得分:3)

如果你想要的只是一个简单的用户级别,普通的整数属性就可以完成这项工作。

我认为你试图在这里描述某种状态机功能。

检查aasm gem

你可以拥有类似的东西:

class User
  include AASM

  aasm do
    state :first_state, :initial => true
    state :second_state
    state :third_state
    ...
    state :final_state

    event :first_blood do
      transitions :from => :first_state, :to => :second_state
    end

  end
end

可以用来做

之类的事情
user.first_blood

会将用户提升为second_state