Tag: 更新

即使未更改,也要停止ActiveRecord保存序列化列

这与散列的Rails部分更新问题非常相似,但问题并没有真正得到回答恕我直言。 问题是这样的:我有一个带序列化列的模型: class Import < AR::Base serialize :data 就我而言,在第一次保存/创建模型后,这些数据将会,而且应该不会更改。 所以我想禁用AR的function,它始终保存序列化列(这通常是一个好主意,因为它无法检测到这些更改)。 我想禁用保存,因为数据可能非常大,模型会经常更新。 我已经尝试过monkeypatching到ActiceRecord :: AttributeMethods :: Dirty,如下所示: class Import def update(*) if partial_updates? super(changed | (attributes.keys & (self.class.serialized_attributes.keys – [“data”]))) else super end end 但这似乎没有效果。 有人有更好的主意吗? 这是在Rails 3.0.12下

rails 5.0.1已经初始化

我试图生成一个用户,但它出现这个错误,如果我给一个rails s出现相同的错误,我什么都不做,我给了一个bundle update ,一个bundle install在gem,没有任何变化。 我将4.6.2的GEMFILE中的rails版本更改为5.0.1并进行了bundle update 。 我想使用版本5,但我不知道如何更新,我看到一个教程说我可以这样做,所以我做了,只是现在出现这个错误。 root@ubuntu:~/Projeto-video-3# rails model User name document kind status:integer notes:text /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::VERSION /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_VERSION /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_LIBRARY_VERSION /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_VERSION_NUMBER /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::OPENSSL_FIPS /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: warning: already initialized constant OpenSSL::Config::DEFAULT_CONFIG_FILE /usr/lib/x86_64-linux-gnu/ruby/2.4.0/openssl.so: […]

Rails:更快地对许多记录执行更新

在我们的Rails 3.2.13应用程序(Heroku中的Ruby 2.0.0 + Postgres)中,我们经常从API中检索大量订单数据,然后我们需要更新或创建数据库中的每个订单,以及关联。 单个订单创建/更新自身加上约。 10-15个关联对象,我们一次最多导入500个订单。 下面的代码有效,但问题是它在速度方面根本没有效率。 创建/更新500条记录大约需要 1分钟,生成6500多个db查询! def add_details(shop, shopify_orders) shopify_orders.each do |shopify_order| order = Order.where(:order_id => shopify_order.id.to_s, :shop_id => shop.id).first_or_create order.update_details(order,shopify_order,shop) #This calls update_attributes for the Order ShippingLine.add_details(order, shopify_order.shipping_lines) LineItem.add_details(order, shopify_order.line_items) Taxline.add_details(order, shopify_order.tax_lines) Fulfillment.add_details(order, shopify_order.fulfillments) Note.add_details(order, shopify_order.note_attributes) Discount.add_details(order, shopify_order.discount_codes) billing_address = shopify_order.billing_address rescue nil if !billing_address.blank? BillingAddress.add_details(order, billing_address) end shipping_address = […]