【发布时间】:2014-04-21 17:02:54
【问题描述】:
我有一个 rake 任务,我正在尝试在数据库中查找要更新的记录。问题是当我使用 (params[:name]) 时,它会抛出消息 undefined local variable or method `params' for main:Object。如何使参数可用于 rake 任务?谢谢。我是新手,感谢您提供任何帮助。
task scrape_borisAPI: :environment do
@json = HTTParty.get("http://borisapi.heroku.com/stations.json")
@json.each do |station|
@location = Location.find(params[:name])
@location.nb_bikes = station["nb_bikes"]
@location.nb_empty_docks = station["nb_empty_docks"]
@location.update_attributes(:nb_bikes => "@location.nb_bikes", :nb_empty_docks => "@location.nb_empty_docks")
end
end
最初 rake 任务看起来像这样,我正在尝试修改它以更新记录,而不是创建新记录。
task scrape_borisAPI: :environment do
@json = HTTParty.get("http://borisapi.heroku.com/stations.json")
@json.each do |station|
@location = Location.new
@location.name = station["name"]
@location.latitude = station["lat"]
@location.longitude = station["long"]
@location.nb_bikes = station["nb_bikes"]
@location.nb_empty_docks = station["nb_empty_docks"]
@location.save!
end
end
【问题讨论】:
-
您的意思是您希望能够将参数传递给 rake 任务以在其中使用它们?或者,您想在 Rails 中使用请求中的
params? -
我本质上希望数据库中每条记录的名称都可用于 rake 任务?那有意义吗?谢谢
-
我了解您想要做什么,但不了解您想如何完成它。您对
params[:name]的期望究竟是什么。params只是 Rails 请求上下文中的一个方法。您不会在 Rake 任务中找到params。如果您想要将参数传递给 Rake 任务,那是另一回事。你了解什么是 Rake 任务吗? -
我想我知道,但现在我可能会怀疑自己!我已经编辑了原始问题,也许这有帮助?我正在尝试在数据库中查找现有记录,然后对其进行更新。我不知道传入参数是否是我想要的,我只需要 rake 能够查看数据库,如果它找到了记录匹配名称,更新它
标签: ruby-on-rails scrape rake-task