我有 2 个单独的 Rails 应用程序(应用程序 a、应用程序 b)。这两个应用程序都维护一个客户列表。我想每天运行一次 rake 任务,并让应用 b 从应用 a 中拉取选定的客户。
这是我试图解决这个问题的方法。如果我走错了路,请告诉我。
我正在使用 JBuilder 生成 JSON
我的问题是如何让应用 B 在应用 A 中设置一个 id,以便系统知道客户已经被转移过来。
我假设我必须做一个类似于我为获取客户列表所做的请求,但我在让它工作时遇到了问题。
应用程序 A
客户模型
scope :for_export, :conditions => {:verified => true, :new_system_id => nil ...}
客户控制器
skip_before_filter :verify_authenticity_token, :only => [:update]
#
def index
@customers = Customer.for_export
end
def update
@customer = Customer.find(params[:id])
if @customer.update_attributes(params[:customer])
render :text => 'success', :status => 200
end
end
应用程序 B
耙任务
task :import_customers => :environment do
c = Curl::Easy.new("http://domain.com/customers.json")
c.http_auth_types = :basic
c.username = 'username'
c.password = 'password'
c.perform
a = JSON.parse(c.body_str)
a.each do |customer|
customer = Customer.create(customer)
#put request back to server a to update field
end
end
结束结束
我目前正在工作,我只是不确定这是否是正确的方法,以及如何发起一个 put 请求来调用客户控制器中的更新方法。
谢谢!
瑞安