代码之家  ›  专栏  ›  技术社区  ›  ivan

RubyonRails样式:Model#attr_name?方法

  •  0
  • ivan  · 技术社区  · 12 年前

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

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

    所以我可以修复现有的呼叫 #vip 呼叫到 #vip? 。这样做是不好的做法,还是让人困惑 #重要人物 存储重要性级别,以及 vip? 检查记录是否“足够重要”?命名有点纠结,因为 status 已被另一列占用。

    2 回复  |  直到 12 年前
        1
  •  0
  •   backpackerhh anson    12 年前

    A. predicate method 应返回 true false ,但你可以稳定你想要的条件。不管方法名如何,我认为您所做的是正确的。

    class User < ActiveRecord::Base
      def vip?
        vip >= 10 # self is unnecesary
      end
    end
    
        2
  •  0
  •   jxpx777 Sohail Arif    12 年前

    我认为你对属性的重命名是正确的。 vip? 返回所讨论的属性是否超过某个值。也许属性应该是这样的 credits , points reputation ? 在这方面,我想到了StackOverflow本身。用户有一个累计 名誉 分数一些徽章仅根据累积分数分配。虽然这可能是用户收到的所有赞成票、问题、答案等的合成分数,但您的数据可能是一个简单的整数值,您可以根据该整数值确定状态。vBulletin和其他论坛软件也有基于帖子数量和其他属性的功能。