0

オプションと呼ばれる対応するモデルを持つ「オプション」と呼ばれるデータベーステーブルがあるとしましょう。このテーブルの構造は単純で、次のようになります...

id    -> primary key, auto increment
name  -> key
value -> value for the key

サンプルデータ行は次のようになります...

id   name                         value     
---- ---------------------------- -----------
1    default_view                 DAILY     
2    show_registration_number     0         
3    notification_method          IMMEDIATE     

私が望むのは、すべてのオプション (キー) がメソッド名としてアクセスできるようにすることです。

たとえば、次のようにすると...

@options = Options.find(:all)

@options.default_view値を「DAILY」として返し、同様@options.show_registration_numberに値を0として返すようなデータにアクセスすることは可能ですか.

@options.default_view = 'MONTHLY'また、それが可能である場合、データベース内の対応するレコードを更新する必要がある場合のように、変更が許可されるかどうか。

4

1 に答える 1

0

これにより、探していた答えが ほぼ得られます:http: //code.dblock.org/how-to-define-enums-in-ruby

これはconst_missing、「列挙型」の要素が定数として定義されていることを前提としています。Option::default_view

ただし、このコードを使用するように適合させる方法を簡単に理解して、次のmethod_missingことができるようにすることができます。Option.default_view

これと同じアプローチの別の例がrails-settingsgemに含まれているため、このコードを参照して、探している答えを探すことができます。

于 2013-01-17T23:50:21.050 に答える