TIM Labs

2014年1月アーカイブ

Railsでの区分値の扱いについて考える の続きです。

区分値情報をDBに保存しておくか、アプリにのみ保存しておくのか、悩ましい所です。 DBに区分値を保存しておくと、ActiveRecordなオブジェクトになって扱いやすいという利点があります。 しかし、DBにもアプリにも区分値の情報(ProductTypeの1はLADIESであるといった情報)を持つ事になり、二重管理の状態となる可能性があります。

一カ所変えたら対になるもう一方の修正もしないといけない、という状態は、システム保守の観点からはよろしくありません。 私は過去にアプリ側に区分値情報を更新したのに、DB側に区分値情報を入れ忘れていた! という失敗を体験しました。

区分値情報をアプリ、DB両方に持ってるのはやめたい。でもActiveRecordライクなオブジェクトで区分値を扱いたい。 ActiveRecordのデータソースがclass内に定義したhashとかファイルになっていればいいのに。そんなときに利用するのがActiveHashです。

今回はActiveHashを使って区分値を扱う方法について説明します。 利用するRailsのバージョンは4.0.2です。

Railsでの区分値の扱い、皆様どのようにしておられるでしょうか?

区分値とは、例えば性別情報(1: MALE, 2: FEMALE)とか、服を扱っているシステムの場合は商品種別(1: LADIES, 2: MENS, 3: KIDS)の事を指します。

私は区分値情報をDBに保存しておこうか、アプリ側でのみもっておこうか、毎回悩まされます。 区分値をDBに保存しておくと、外部キー制約もつけられるしActiveRecordでも扱いやすいといったメリットがあります。 しかし、アプリとDB両方に区分値情報を持っているとデータの二重管理になってしまいます。 DB側の区分値とアプリ側の区分値が食い違ってる! なんていう事態も発生します。

ならば、いっその事DBに保存するのはやめて、区分値情報をアプリ側にのみ持っていた方がよいのでは、というのが最近の私の考えです。

今回はRailsで区分値を扱う方法について考えてみます。

このアーカイブについて

このページには、2014年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2013年12月です。

次のアーカイブは2014年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。