My Person模型具有ActiveRecord支持的vip
属性,因此它自动获得vip
和vip=
方法。这个属性最初是一个布尔值,但是需要更改为一个整数以允许几个类别的重要性/声望/等,并且由于已经有很多对布尔值的引用,我想我会添加一个方法,如:
class User < ActiveRecord::Base
def vip?
self.vip >= 10
end
end
因此我可以通过调用#vip
修复现有的#vip?
来电。这是不好的做法,或只是这样做会让人感到困惑,#vip
存储重要性级别,vip?
检查记录是否“足够重要”?命名有点纠结,因为status
已被另一列采用。
答案 0 :(得分:0)
我认为您通过重命名属性来走上正轨。 vip?
返回有问题的属性是否超过某个值。也许属性应该是credits
,points
或reputation
?在这方面我想到StackOverflow本身。用户的累积reputation
分数。仅根据此累积分数分配一些徽章。虽然这可能是用户收到的所有投票,问题,答案等的综合得分,但您的数据可能是一个简单的整数值,您可以从中获得基本状态。 vBulletin和其他论坛软件也有基于帖子和其他属性的数量。
答案 1 :(得分:0)
predicate method
应该返回true
或false
,但您可以确定所需的条件。无论方法名称如何,我认为你所做的是对的。
class User < ActiveRecord::Base
def vip?
vip >= 10 # self is unnecesary
end
end