【发布时间】:2015-06-08 01:10:44
【问题描述】:
我收到一组参数 [config['events']],如下所示:
[{"event"=>"loaded", "tags"=>["videjbajc_jbad"]}, {"event"=>"clicked"},
{"event"=>"downloaded"}, {"url"=>"http://aintnothingbutarailsthing"}....}]
我正在尝试对每个哈希键运行验证,这应该是动态的,因为输入可能会改变,哈希键名称保持不变。
第一步 - 调用 events 方法来映射每个哈希数组:
def valid?
@errors = []
@errors << 'Please check events unless self.events.all?(&:valid?)
@errors.empty?
end
第二步 - 运行映射到我的事件类
def events
@events ||= (config['events'] || []).map { |e| Event.create(e) }
end
最后一步 - 接收数据数组对象并进行初始化和验证
class Event < Struct.new(
:event,
:link_type,
:url,
:media_id,
....
)
def self.create(data)
self.new(
data['event'],
data['link_type'],
data['url'],
data['media_id'],
...
)
end
validates :event, :presence => true
validates :url, :allow_nil => true, :format => /https:/
.. and so on and so forth.. :-)
end
问题:不确定我在这里做错了什么。我只能初始化事件键。在 self.create(data) #{data.inspect} 之后加薪将返回
{"event"=>"loaded", "tags"=>["amex_video_q3_delivered"]}
:event 可以验证,但标签不会,其他所有东西也一样.. :-(
请指教:-)
【问题讨论】:
-
你的问题到底是什么?
-
如何使用上述结构正确初始化我的哈希数组?
标签: ruby arrays ruby-on-rails-3 hash