如何为rails-settings插件创建表单

时间:2011-09-15 04:19:20

标签: ruby-on-rails forms activerecord settings

我有一个需要一些用户定义设置的Rails 3应用程序。我想使用这个https://github.com/ledermann/rails-settings插件。我让它在rails控制台中工作。但我无法在表格中工作。我是否使用fields_for& attr_accessible?如果是这样我没有运气。

我需要为两个模型添加设置:

例如,特定于用户的设置

user = User.find(123)
user.settings.color = :red
user.settings.color
# => :red

user.settings.all
# => { "color" => :red }

(以上在控制台中对我来说很好。)

但我需要通过标准网络表单管理它们。我很想知道其他人是如何处理的。

感谢。

1 个答案:

答案 0 :(得分:13)

我所做的是将动态setter / getter添加到我的User类中

class User < ActiveRecord::Base

  has_settings

  def self.settings_attr_accessor(*args)
    args.each do |method_name|
      eval "
        def #{method_name}
          self.settings.send(:#{method_name})
        end
        def #{method_name}=(value)
          self.settings.send(:#{method_name}=, value)
        end
      "
    end
  end

  settings_attr_accessor :color, :currency, :time_zone

end

使用它,您可以像使用User模型的任何其他属性一样使用“color”。 此外,添加更多设置非常简单,只需将它们添加到列表

即可