我有一个可变账单,我发送给哈希:
bill = Hash 'number' -> 2017 'bill_type' -> h 'sponsor_id' -> 400004 and 23 more keys
将其传递给初始值设定项:
Bill.new(bill),结果是一个没有数据的对象:
# and Bill.new(bill).to_json = {}
module GovKit module OpenCongress class Bill < OpenCongressObject attr_accessor :bill_type, :id, :introduced, :last_speech, :last_vote_date, :last_vote_roll, :last_vote_where, :last_action, :number, :plain_language_summary, :session, :sponsor, :co_sponsors, :title_full_common, :status, :most_recent_actions, :bill_titles, :recent_blogs, :recent_news, :ident def initialize(params) params.each do |key, value| instance_variable_set("@#{key}", value) if Bill.instance_methods.include? key end end ...
我能够在initialize函数内部进行监视,并且定义了键,但初始化程序始终生成一致的空对象。我使用rails 3.0.7,rubygems 1.6.2和ruby“ruby 1.9.2p180(2011-02-18修订版30909)[x86_64-darwin10.7.0]”。
答案 0 :(得分:0)
您可能想尝试为这些字段添加attr_accessible。也许ruby / rails足够聪明,可以保护你免受自己的大规模任务。
答案 1 :(得分:0)
我找到了。 gem作者假设JSON.parse生成符号作为键。现在json gem生成字符串作为键。在下面添加to_sym可以使它工作。
instance_variable_set("@#{key}", value) if Bill.instance_methods.include? key.to_sym