在Ruby和MySQL中保持数据最新

时间:2013-10-02 20:41:30

标签: mysql ruby-on-rails ruby-on-rails-3 activerecord update-attributes

我有一个MySQL数据库,其中有一个表来存储来自第三方支付提供商服务的数据。我们存储的数据主要是客户的订阅详情。不幸的是,我需要下载一个导出文件并解析它以获取数据。我想要做的是设置一个日常工作,更新我的数据库中的订阅end_dates。所以说我有一个看起来像这样的订阅对象:

Subscription object:
  attributes:
    id: 
    subscription_uuid: 
    account_code: 
    email: 
    current_period_ends_at:

我想知道的是使用rails在mysql中更新这些对象current_period_ends_at datetime字段的最有效方法。

我从一组看起来像这样的哈希开始:

[{:id => 1, :subscription_uuid => 123, :account_code => 10, :email => test@test.com, :current_period_ends_at => 2013-10-02 16:37:05}]

我想我会批量遍历数组,因为它是大量数据,并在数据库中的每个订阅对象上调用rails update_attributes方法。我想知道有多聪明的人会这样做,或者我是否有办法批量检索一堆订阅对象,然后又批量更新它们以使流程更快?

1 个答案:

答案 0 :(得分:0)

我会用create!生成一个对象并保存它。 create还接受一个哈希数组,以便创建和保存多个对象。你对批处理的直觉是正确的。

  params = {
    :id     => something,
    :subscription_uuid => something,
    :account_code   => something,
    :email      => something,
    :current_period_ends_at => something
  }
  Subscription.create!(params)