访问Rails 3中的变量before_save方法

时间:2012-11-08 18:21:36

标签: ruby-on-rails ruby-on-rails-3 before-save

我有以下before_save方法:

def get_data
  url = "http://www.api-fetching-url.com/where_my_data_input_is=#{self.my_data}&output=json"
  new_data = HTTParty.get(url)
  @field_to_update = new_data['one']['two']['here']
  self.field_to_update = @field_to_update
end

不幸的是,self.my_data似乎无法正常工作,因为JSON网址不会产生任何结果。但是,当我以硬编码的方式替换my_data时,它的工作正常。此外,我可以在Rails控制台中执行find并获得my_data字段。因此,这不是一个问题,不保存或表格方面的东西。

before_save方法中以这种方式插入数据是否存在问题?如果没有,是否有一种不同的做法,我错过了?

1 个答案:

答案 0 :(得分:0)

一些评论:

  • 您不必(实际上不能)始终使用self接收器调用方法。例如,私有方法只能在没有显式接收器的情况下调用,因此私有方法没有self. ...
  • 为什么不检查网址并检查网址是否正确?只需在分配网址的行之后添加puts url,运行程序并检查输出。网址是否正确?
  • 您可能没有正确使用HTTParty:HTTParty.get('...')返回一个响应对象,您可能需要正确解析响应的正文。

JSON服务的示例:

url      = 'http://service.com/path/to/resource.json'
response = HTTParty.get url

data = JSON.parse(response.body)
# now you can use the data, e.g.
# bla = data['one']['foo']