Ruby on RailsでActiveRecordを使ってデータを取得した時に「.」(ドット)を使わずに値を参照する方法

タイトルがやけにピンポイントですが・・・

Railsであれこれしてる時にですね、ふとハマった(?)んですが。 ActiveRecordを使って各フィールドのデータをあれこれする時っていつも「.」(ドット)を使って参照してたんです。

user.name

といった感じです。

よくある見慣れた参照方法です。

たいていの簡単なことをするのならばこれで事足りるんですが、ふとした機能を実装するときにこんなケースがあったんです。

フィールド名が文字列として変数に格納されている状態でActiveRecordにあるそのフィールドの値を参照したい

というケース。

field = "name"
user = User.find(1)

こんなかんじでfieldっていう変数があってですね、userっていう変数が取得したActiveRecordのインスタンスで・・・

いつもならフィールド名は分かっているのでuser.nameで済む話で。

でも今回はnameかは分からない。

あくまで変数に入っているフィールド名の値が欲しい。

ちょっと落ち着いて考えたらすぐ「ああ!」ってなったんですけど、そうなるまでに3,4回ググりました・・・w

「ActiveRecord フィールド名 文字列」

「ActiveRecord フィールド名 変数」

とかw

これがあまりに初歩的過ぎるのか、検索ワードが悪すぎるのか、めぼしい情報がさっぱりヒットせずw

結局自分で解決しました。結果、

user[field]

で済む話でした。

・・・(汗)

PHPとかで、オブジェクト(stdClassとか)をいじりっぱなしの脳だと、ドットでアクセスしてるオブジェクトに対してハッシュでアクセスするというのがすぐに出てこなかった・・・

基本から出直してこようw

以上です。

Recent Posts

Archive