活动记录在自身内部哈希

ove*_*one 1 ruby hash activerecord ruby-on-rails http

所以这有点愚蠢,而且缺乏编程知识,而不是任何ruby或rails特定的东西.

如果我想把一个普通的类变成哈希,那就不那么糟了.我已经有一个:

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
Run Code Online (Sandbox Code Playgroud)

只需从构造函数中传递的内部变量生成哈希.我想对活动记录做同样的事情,但它的抽象性并不容易.

可以说我有这门课

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
Run Code Online (Sandbox Code Playgroud)

我可能会以错误的方式看待这个问题.我知道在课堂外我可以简单地说

@x = Result.find(passed_id).to_hash
Run Code Online (Sandbox Code Playgroud)

然后做我想做的事.但我宁愿打电话

@x = Result.send
Run Code Online (Sandbox Code Playgroud)

(它将结果的变量转换为哈希并发送它们)我已经有了发送部分,只需要知道如何将变量从内部变为哈希.

Bit*_*rse 5

您可以尝试使用JSON而不是YAML:

Result.find(passed_id).to_json
Run Code Online (Sandbox Code Playgroud)

要么

Result.find(passed_id).attributes.to_json
Run Code Online (Sandbox Code Playgroud)

您也可以使用以下选项:except和:仅用于to_json方法.

Result.find(passed_id).attributes.to_json(:only => ['status', 'message'])
Run Code Online (Sandbox Code Playgroud)