Ruby on Rails风格:Model#attr_name?方法

时间:2014-03-17 18:37:15

标签: ruby-on-rails

My Person模型具有ActiveRecord支持的vip属性,因此它自动获得vipvip=方法。这个属性最初是一个布尔值,但是需要更改为一个整数以允许几个类别的重要性/声望/等,并且由于已经有很多对布尔值的引用,我想我会添加一个方法,如:

class User < ActiveRecord::Base
  def vip?
    self.vip >= 10
  end
end

因此我可以通过调用#vip修复现有的#vip?来电。这是不好的做法,或只是这样做会让人感到困惑,#vip存储重要性级别,vip?检查记录是否“足够重要”?命名有点纠结,因为status已被另一列采用。

2 个答案:

答案 0 :(得分:0)

我认为您通过重命名属性来走上正轨。 vip?返回有问题的属性是否超过某个值。也许属性应该是creditspointsreputation?在这方面我想到StackOverflow本身。用户的累积reputation分数。仅根据此累积分数分配一些徽章。虽然这可能是用户收到的所有投票,问题,答案等的综合得分,但您的数据可能是一个简单的整数值,您可以从中获得基本状态。 vBulletin和其他论坛软件也有基于帖子和其他属性的数量。

答案 1 :(得分:0)

predicate method应该返回truefalse,但您可以确定所需的条件。无论方法名称如何,我认为你所做的是对的。

class User < ActiveRecord::Base
  def vip?
    vip >= 10 # self is unnecesary
  end
end