一个简单的“front_page”属性就足够了,或者像你提到的另一个模型,使用has_one关系也可以。
使用另一种模式可以让您保留一些更多的信息,比如它应该保留在首页(过期日期?)多长时间,还是多少次(假设聚会可以使用两次)。这真的取决于您的系统的其他要求。
你也可以通过Singleton模式的简单实现逃脱。有上做出一个ActiveRecord对象一个Singleton的Rails的维基的简短描述(见下文):http://wiki.rubyonrails.org/rails/pages/TipsAndTricks
制作一个单独的ActiveRecord对象
如果你只有一个 条目的表,有用用于跟踪对一个数据库数目 序列的无 序列,可以使用包含在红宝石单身 模块像这样:
require 'singleton'
class Master < ActiveRecord::Base
include Singleton
def initialize(args=nil) super(args) if record = Master.find(:first)
self.attributes = record.attributes end end def next_tracking_number increment!
(:current_tracking_number) current_tracking_number end def
self.next_tracking_number instance.next_tracking_number
end
end
更新:
这是一个非常差的代码示例(被复制并从轨道维基,其具有无格式粘贴)。我强烈推荐[Ruby Design Patterns]一书,它详细解释了许多GoF设计模式(同时使它们适用于Ruby应用程序)。但是Google应该会返回一些在Ruby中使用Singleton模式的好资源。 2
我总是在数据库中执行我的域规则(例如派对必须有位置和日期),但感觉应用程序特定的逻辑可以愉快地生活在模型中。 未来,他们可能会推动多于一方或向不同用户推广不同方。业务规则=我的模型。 – RichH 2008-12-03 20:43:22