我用在我的模型定义为这样一个枚举下一个枚举:Ruby on Rails的摆脱目前的模式的枚举值
enum role: [:member, :content_creator, :moderator, :admin]
我想要一个简单的方法来从用户的当前角色的下一个角色,所以我想出了这个:
def self.next_role(user)
begin
User.roles.drop(User.roles[user.role] + 1).to_enum.next
rescue StopIteration
nil
end
end
在视图中,我想可能向产品中添加下列方法链:[...].first.humanize.titleize
。
我只是有点担心我的解决方案在这里,但主要想知道是否有更好的(阅读:更多内置)的方式来得到我后?我知道那里只有四个枚举,我承认我开始使用if ... elsif ... etc.
执行。换句话说,我发现自己比Ruby本身更擅长Rails。有人可以详细说明一个“应该”如何做到这一点?
这是否处理包装? ':admin'的“下一个”是什么? – tadman
拍摄。很好的问题。你认为'无'作为候选人?我希望该方法表示':admin'后面没有任何内容。 –
您正在定义非标准行为,因此您需要制定规则。我只是说你需要考虑这样的情况,以确保它始终如一地以有意义的方式工作。 – tadman