簡體   English   中英

活動記錄到 hash 內部

[英]active record to hash inside itself

所以這有點愚蠢,更缺乏編程知識,而不是任何 ruby 或特定於軌道的知識。

如果我想把一個普通的 class 變成 hash 它還不錯。 我已經有一個:

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

只需從構造函數中傳遞的內部變量生成 hash。 我想對活動記錄做同樣的事情,但它的抽象性並不容易。

假設我有這個 class

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

我可能以錯誤的方式看待這個問題。 我知道在 class 之外我可以簡單地說

@x = Result.find(passed_id).to_hash

然后做我想做的事。 但我寧願稱之為喜歡

@x = Result.send

(將結果的變量轉換為 hash 並發送它們)我已經有了發送部分,只需要知道如何從 class 內部將變量轉換為 hash。

您可以嘗試使用 JSON 而不是 YAML:

Result.find(passed_id).to_json

或者

Result.find(passed_id).attributes.to_json

您也可以對to_json方法使用諸如:except 和:only 之類的選項。

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

http://api.rubyonrails.org/v4.0.12/classes/ActiveModel/Serialization.html#method-i-serializable_hash

我寫了更多的東西,因為 SO 要求我這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM