通过Web表单使用户可以访问应用程序范围的设置

时间:2011-11-16 22:50:10

标签: ruby-on-rails ruby-on-rails-3.1 settings

我整个下午都在四处寻找尝试找到在Rails中设置用户可修改的应用程序范围设置的主导惯例...到目前为止没有骰子。

我正在开发一个旨在供一个组织使用的简单应用程序,因此不需要用户模型,只有一个管理员。该管理员需要能够修改某些站点范围的首选项,例如徽标,配色方案,标语等。

在Rails 3.1中创建此类应用程序范围设置的最佳实践是什么,并使最终用户可以轻松访问它们?您可以链接到的任何示例应用的奖励积分。

2 个答案:

答案 0 :(得分:3)

存储可编辑应用程序范围设置的主要约定似乎是键值存储的概念,由ActiveRecord或其他机制支持。而且,据我所知,根据您的要求,至少有两种很好的策略来存储您的应用程序范围的设置。

如果你想要一个通用的方法,但是非常灵活地定义了一些可以与AR模型相关联的(非)范围设置,你有Rails-Settings(或者它的缓存版本Rails-Settings-Cached) 。我没有尝试在Rails 3.1中使用插件,但它在3.0上运行良好。它允许你有类似的东西:

Settings.main_color = '#3333CC'
Settings.logo_file_name = 'images/logo.png'
Setting['preferences.color'] = :blue

如果你想要一个强大的方法,使用单表继承并允许你像在实际的AR记录中那样在某些设置中执行验证,那么你有一个很好的article,由Jeff Dean编写,引导您完成整个过程。这样,您可以通过将设置分组到子类来设置范围,您可以使用以下内容:

class ApplicationSettings::PageLayout < ApplicationSetting
  validates :title, :presence => true
  ...
  def title
    value
  end

  def title=(value)
    self.value = value
  end

我想通过一些简单的调整,您甚至可以在某些设置中拥有has_manybelongs_to关联(例如可变大小的电话号码或电子邮件列表)。

我个人更喜欢后一种方法(当设置是一个大问题时),因为它可以让你更好地控制你存储的设置,并保持你的代码干净和干燥,让你遵循MVC模式。

答案 1 :(得分:0)

我通常在管理部分设置一个带有一些基本脚手架的属性模型 - 然后在必要时调用相关的属性'字段',比如Property.find(:field =&gt;“EARLIEST_DATE:YEAR”),这将有一个用户可设置的值。

属性可能不是数据库表的最佳名称(往往认为保留名称在某处发生冲突的可能性太大) - 但是你明白了。优点是您可以设置范围以访问用户设置的值。

enter image description here