私のRailsプロジェクトでは、各クラス(モデル)が独自の設定のための "名前空間"を持つ文字列インデックス付きハッシュにグローバル設定を保存します。たとえば、Newsモデルの設定が「news.stories_per_page」または「news.show_date」になっている可能性があります。mixinのアクセスクラス名
どこにでも名前をつけることを避けるために、これらの設定にアクセスするための一般的なクラスメソッドを提供するmixinがあります。このmixinを使って、私は次のようなコードで 'news.show_date'にアクセスできました:
News.setting :show_date
=> true
ここに問題があります。文字列「news.show_date」を生成するために、私は私の中でモジュールをミックスしたモデルのクラス名を知っている必要があります。しかし、私にとって非常に有用ではないクラスメソッド、
self.class
=> Class
内。私の純粋な実装では、これにより、すべてのモデルが 'クラス'の下に設定を保存するようになりました。名前空間。これは受け入れられません。
問題をより明確に説明できないことをお詫び申し上げます。私はRubyに若干新しく、そのオブジェクトモデルを完全に理解していません。この問題はkludge which seems to be required in Ruby to mix in class methodsと関係している可能性があります。
がとてもありますこれを行うための多くの方法(あなたの持っているものとはほとんど異なる)。あなたの厳しい要求とは何ですか?文字列を使用する単一のハッシュを使用する必要がありますか? – Phrogz
@Phrogz:難しくて速いreq。 Rubyオブジェクトをクラスごとに(モデルごとに)アクセスできるデータベースにシリアル化することができます。私はそれのために "rails-settings-cached"という宝石を使っていますが、おそらく多くの方法があります。主に私が背後にある論理を理解したかったので、私はこの質問をしました。 – jforberg