0

Neo4j の残りの API のラッパーを作成しようとしています。私が見つけた他の ORM は、私が必要としている機能を完全には実行していません。ActiveRecord を模倣したものを使用したいのですが、グラフ データベース用です。したがって、「NeoRest.find(id=1)」のようなものを実行すると、その ID に対応するデータベース レコードが返されますが、NeoRest インスタンスとして返されます。私のコードは以下です。私はウェブ全体を見ましたが、私を助けるものを見つけることができません - うまくいけば、これは愚かな質問ではありません =\

require 'net/http'
require 'uri'
require 'json'

class NeoRest

    def NeoRest.post(key = nil, value = nil)
#       NeoRest.new

        base_url= URI('http://localhost:7474/db/data/node/')

        response = Net::HTTP.post_form(base_url, {key => value})
        decode=JSON.parse(response.body)
        puts decode["self"]
        puts decode["data"]
    end #testrest
end #class

bob=NeoRest.post("name", "josh")
puts bob.class #=> nilclass -- want thiis to be =>NeoRest
4

2 に答える 2

2

Ruby メソッドは最後のステートメントの結果を返します。あなたの場合、puts(...)どちらが返されますかnil

おそらく、次のようなコードが必要です。

class NeoRest

    def self.post(key = nil, value = nil)
        new(key, value)
    end

    def initialize(key = nil, value = nil)

        base_url= URI('http://localhost:7474/db/data/node/')

        response = Net::HTTP.post_form(base_url, {key => value})
        @decode=JSON.parse(response.body)
    end
end
于 2013-05-12T20:46:42.457 に答える
0

それで、必要なものを手に入れることができました。少し整理しましたが、今度は .post メソッド内で、NeoRest のオブジェクトをインスタンス化する別のメソッドを呼び出し、REST メソッドから返された情報をそれに渡します。

class NeoRest
    def self.post(key = nil, value = nil)
        request = Net::HTTP::Post.new("/db/data/node/")
        response = @http.request(request)
        create_instance(response)
    end

    def self.create_instance(response)
        decode=JSON.parse(response.body)
        instance = self.new 
        instance.data=decode["data"]
        puts "created following instance"
        puts instance
        instance
    end
end
于 2013-05-13T03:10:31.933 に答える