如何通过外部RESTful调用插入RAILS数据库

时间:2013-02-13 19:24:51

标签: ruby-on-rails rest curl

解决:我做了一些错误,所有这些都涉及我的控制器接收数据。发送数据时,以下方法没有任何问题。

1:我在reportController #create

中没有使用@ report.save

2:我没有在我的控制器中传递params [:report]

3:我将“skip_before_filter:verify_authenticity_token”添加到我的应用程序控制器以停止日志中的警告。 解决了。数据插入成功。

===== ORIG。下面的问题=====

我需要一个外部程序来发出一个将东西插入Ruby on Rails数据库的命令。 我理解这种安全问题,但由于这个应用程序不是公开的,所以它不是一个真正的问题。

这是我希望实现的工作流程:

REST客户端> RAILS>创建新的DB TABLE行

出于举例的目的:我的route.rb文件包含

resources :reports

所以我能够使用这些路线进行CRUD。我似乎无法让我的休息客户端正常工作。

更新: 我在ONE尝试了一个RUBY rest client AND curl命令,但没有用。

require 'rest_client'
require 'json'

hash_to_send = {:test_name => 'Fake Name', :pass_fail => 'pass',:run_id => 1111, :category => 'Fake Category'}

#formulate CURL attempt
myCommand =  "curl -H 'Content-Type: application/json' -X POST   http://localhost:8889/report.json -d #{hash_to_send.to_json} > deleteme.html"
#execute CURL attempt
`#{myCommand}` # RESULT--> 795: unexpected token at 'test_name:Fake Name'


#Make Ruby rest client attempt
response = RestClient.post( "http://localhost:8889/report.json", 
  hash_to_send.to_json, 
  :content_type => :json, :accept => :json
)

#debug info 
puts myCommand # Returns --> {"test_name":"Fake Name","pass_fail":"pass","run_id":1111,"category":"Fake Category"}

1 个答案:

答案 0 :(得分:1)

而不是命令行中的curl,使用ruby脚本并处理REST调用和Gems的JSON转换。例如,使用rest-client gem(https://github.com/archiloque/rest-client)和标准json gem,您可以写:

require 'rest_client'
require 'json'

response = RestClient.post( "http://localhost:8889/report.json", 
  params_in_hash.to_json, 
  { :content_type => :json, :accept => :json }
)