2012-02-25 8 views
0

私がどのように見えるのテーブルがあります:起動時にデータベースにあるものを表す静的クラスを作成する方法は?

AccountType 

ID Name Property1 Property2 Property3 

は、私はIDと名前の両方で参照することができ、データベース行を表すクラスを作成します。

私は自分のコードで参照していてdbをすべてヒットしたくないため、これは静的な表現にしたい(まれにしかしないと変わらない、アプリケーションを再起動できる)時間。

他のテーブルとも結合する必要があるため、データベースに必要です。

これはできますか?

使用法:確かに

AccountType[1] 
AccountType["PRO_PLAN"] 
+0

なぜデータベースを避けたいですか?手動で結合を実行するのは難しい場合があります。 SQLite db(ファイル)について考えましたか?静的なときは本当に効率的です。 – iltempo

+1

私はあなたがActiveRecordでこれを安全に行うことができると思います。 AccountType.allはコレクションを返します。これはキャッシュされるはずなので、初めてデータベースを使用するときにヒットします。他のテーブルと結合しているのであれば、ActiveRecordリレーションシップを利用するのは理にかなっていませんか? –

答えて

3

。アカウントの種類の新しいハッシュにアクセスするために - IDまたは名前のいずれか - そして、あなたは、[1]またはACCOUNT_TYPE [「PRO_PLAN」] ACCOUNT_TYPEを使用することができます

#config/initializers/constants_from_account.rb 

ACCOUNT_TYPE = {} 

AccountType.all.each do |account_type| 
    ACCOUNT_TYPE[account_type.name] = account_type 
    ACCOUNT_TYPE[account_type.id] = account_type 
end 

:これを試してみてください。

+0

私はそれも右に凍結することができますか? – Blankman

関連する問題