2011-07-15 10 views
1

これはちょっとばかげたもので、ルビーやレール特有のものよりもプログラミング知識が不足しています。自分自身をハッシュするアクティブなレコード

普通のクラスをハッシュに変えたいのであれば、それほど悪くはありません。私はすでに1つを持っています:

class CustomRequest 
    require 'json' 
    require 'net/http' 
    attr_accessor :url, :depth, :status 

    def initialize(url,depth) 
    @url = url 
    @depth = depth 
    end 

    def make_me_hash_and_send 

    @myReq = {:url => @url, :depth =>@depth} 
    myJsonReq = @myReq 
    puts myJsonReq 

    res = Net::HTTP.post_form(URI.parse('http://127.0.0.1:3008/user_requests/add.json'), 
    myJsonReq) 

    end 
end 

コンストラクタで渡される内部変数から単純にハッシュを生成します。私は積極的なレコードのために同じことをしたいが、それの抽象性はそれを容易にしていない。

は、私はこの間違った方法を見てすることができる、このクラス

def turn_my_insides_to_hash 
#How do I take the actual record variables 
# nd generate a hash from them. 
#Is it something like 

@myHash = {:myString = self.myString 
    :myInt => self.myInt } 

end 

を考えてみましょう。私は知っているクラスの外で私は簡単に言うことができる

@x = Result.find(passed_id).to_hash 

私はそれにしたい。しかし、私はむしろちょうど内部クラスからのハッシュに変数を有効にする方法を知っておく必要があり、何かのliks(ハッシュに結果の変数をオンにし、それらを送信します)

@x = Result.send 

私はすでに送信部分を持っている を呼び出します。

+0

@myHash = self :: attributes YAML :: dump(@myHash) – overtone

+0

最初の人が正しいとマークします。私は各パラメータを参照していて、属性が存在していても認識していませんでした。 – overtone

答えて

5

あなたは代わりにYAMLの使用JSONを試みることができる:以外と::

Result.find(passed_id).to_json 

または

Result.find(passed_id).attributes.to_json 

もあなたのようなオプションを使用することができる唯一の方法 to_jsonため。

Result.find(passed_id).attributes.to_json(:only => ['status', 'message']) 
+0

オブジェクトのyamlダンプに過ぎませんでした。私は実際にjsonとしてリクエストを渡しています。 URLでadd.jsonと判断されたもの – overtone

+0

あなたの答えは最初ですが、問題は既に修正されているため、開いたままにする必要はありません。 – overtone

関連する問題