首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增量更新多个模型属性

增量更新多个模型属性
EN

Stack Overflow用户
提问于 2014-08-17 00:42:52
回答 1查看 167关注 0票数 1

我最近开始研究Rails,并建立了一个基本系统来扫描解析和XML数据源,将元素存储在MySQL数据库中。

我打算以设定的间隔运行脚本作为rake任务,以检测数据更改,我正在扫描来自多个区域的数据,目前设置了两个数据库表,ProductProduct Info

Product存储跨越所有区域的持久数据,不持久的数据(如名称和价格)与区域区域设置一起存储在ProductInfo表中。

为了检测更改,我在ProductInfoController中定义了ProductInfoController,以确保如果在XML数据解析期间更改了ProductInfo,则更改ProductInfoupdated_at列。

为了更新值,我使用find_or_initialize_by捕获任何现有记录,然后调用update,将来自数据源的所有属性传入。如果没有任何属性更改记录的updated_at列,那么ProductInfo表中的记录将不会被更改,但是Product表中的记录仍然会被更改。

代码语言:javascript
复制
product = Product.find_or_initialize_by(guid: xml.guid)
product.update(category: xml.category)

product_info = ProductInfo.find_or_initialize_by(product_id: product.id, locale: xml.locale)
product_info.update(name: xml.name, price: xml.price)

因此,问题是,每当调用模型上的保存时,都会调用触摸,这发生在更新调用中。我是否可以使用另一种调用,或者更好地设置这些属性?或者,是否有更好的方法来增量地更新属性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 15:22:00

我没有使用.update(),而是将代码更改为使用.update_attributes,这允许我检查对象是否使用.has_changed?进行了更改,这是由@ic廓建议的。然后,在使用.save提交更改之前,我可以执行适当的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25345316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档