2011-02-03 11 views
1

私はRuby on Railsアプリケーションを使用していますが、どのフィールドをデータベースに戻すかを動的に選択できるようにしたいと考えています。フィールドを動的に選択してRailsに戻す方法

「Dog」というデータベーステーブルがあり、そのテーブルに「id」、「name」、「color」というフィールドがあるとします。

私は名前7S犬#を取得したい場合は、私は明らかにだけ行うことができます:

d = Dog.find(7) 
the_output = d.name 

をしかし、私がやりたいことは犬の#7のために戻すためにどのようなフィールドを動的に選択しています。私はコールのような何かを行うことができるようにしたい

the_field = "name" 

d.(the_field) 

をし、それが犬の名前を返してきたので、私が定義されていると仮定します。 (ここでは括弧を使用しています。これはMATLABではこのように(そして私はずっとやっていますが)動作しますが、Railsではうまくいきません)。プログラムはthe_field = "color"を設定し、私の同じコードは名前の代わりに犬の色を返します。

私はこれをやってみました:

Dog.find(d.id, :select=>the_field) 

が、それは犬のオブジェクトではなく、犬の名前を含むだけで文字列を返します。コードでは、どのフィールドが呼び出されているのかわからないので、私が必要とするフィールドを含む文字列を抽出する方法がわかりません。

うまくいけば、それはすべて意味があり、うまくいけば、これを行う方法を知っている人もいます。

ありがとうございます!

答えて

1

このようなことはどうですか?

class Dog < ActiveRecord::Base 
    def self.query_field(id, field) 
    find(id).send(field) 
    end 
end 

field = :name 
Dog.query_field(7, field) # "Roscoe" 
field = :color 
Dog.query_field(7, field) # "brown" 
+0

Ahha! 'send()'コマンドはまさに私が必要としていたものです。ブリリアント。ありがとう。 – Quad

関連する問題