ruby-on-rails – 如何在相同的Rails应用程序中序列化和通信Acti
主要的想法是我有一个Rails应用程序的几个工作者实例,然后是一个主聚合
我想用以下伪伪代码做这样的事情 posts = Post.all.to_json( :include => { :comments => { :include => :blah } }) # send data to another,identical,exactly the same Rails app # ... # Fast forward to the separate but identical Rails app: # ... # remote_posts is the posts results from the first Rails app posts = JSON.parse(remote_posts) posts.each do |post| p = Post.new p = post p.save end 我正在回避Active Resource,因为我要创建数千条记录,这意味着每条记录会有数千条请求.除非有一种方法可以在一个简单的Active Resource请求中完成所有操作,否则我想避免它. >格式无关紧要.无论什么方便. 解决方法
您可以使用以下几个选项来实现此功能:
活跃资源 正如其他人已经回答的那样,你可以使用ActiveResource.在阅读你的评论后,这似乎是一个你想要避开的解决方案,因为多个请求方面 接收控制器 您可以在第二个rails应用程序中安装一个控制器,用于接收数据并从中创建记录. class RecordReceiver < ActiveRecord::Base def create params[:data][:posts].each do |p| Post.create(p) end end end 您可以将此控制器命名为“API”命名空间,如果正确实施,这是一个相当干净的解决方案. 共享数据库 您可以跨两个应用程序共享一个数据库.这意味着您不需要将数据从一个模型发送到另一个模型,它已经存在.这是您作为开发人员的最少工作量,但根据您拥有的系统架构,可能无法实现. 每个应用程序中有两个数据 您可以在每个应用程序中实现多个数据库,如下所示: #Add to database.yml other_development: adapter: mysql database: otherdb_development username: root password: host: localhost other_production: adapter: mysql database: otherdb_production username: root password: host: localhost 然后,像这样定义你的模型: class Post < ActiveRecord::Base end class PostClone < ActiveRecord::Base establish_connection "other_#{RAILS_ENV}" end 现在,您的克隆模型将指向当前数据库,PostClone模型将指向另一个数据库.通过访问这两者,您可以随时使用基本模型方法复制数据. 结论 由于您不想使用ActiveResource,我建议您只在应用程序之间共享数据库.如果这不可能,那么尝试使用两个模型,每个模型进入不同的数据库.最后,接收控制器是一个有效的,虽然较慢的选项(因为它需要在数据库请求之上执行HTTP请求) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |