2011-09-15 1 views
7

いくつかのユーザー定義設定が必要なRails 3 Appがあります。このhttps://github.com/ledermann/rails-settingsプラグインを使用したいと思います。私はレールコンソールで作業しています。しかし、私はフォームで働くことに問題があります。私はfields_for & attr_accessibleを使用しますか?もしそうなら、私は運がない。rails-settingsプラグインのフォームを作成するには

私は2つのモデルの設定を追加する必要が

たとえば、ユーザーに固有の設定、

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

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

(上記はコンソールで私のために正常に動作します。)

ですが、私は標準的なWebフォームを使ってそれらを管理する必要があります。私は他の人がこれをどのように扱っているのか知りたいです。

ありがとうございました。そのことを、このような

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クラスに動的なセッター/ゲッターを追加している

答えて

13

私がやった、あなたは自分のUserモデルの他の属性と同様に「色」を使用することができます。 さらに設定を追加するのは非常に簡単で、リストに追加するだけです。

+0

優秀な回答 - これはどうやって行うのか不安でしたが、これは魅力的です。レール設定をきれいにする - 多くの感謝!宝石作成者は、彼のGithub Wikiの例としてこれを投稿する必要があります。私の唯一の変更は、関数定義と関数呼び出しをprivateにすることでした。 – MikeH

+0

通常の変数のような形でこれを使用するたびに、次のように表示されます: '保護属性を大量に割り当てることはできません:color、currency、time_zone'。何か案は? – toobulkeh

+1

私はこれを試しても "間違った引数の数(0のために1)"というエラーが出てくる – scientiffic

関連する問題