【问题标题】:Update attributes without touching the database in Rails在不接触 Rails 中的数据库的情况下更新属性
【发布时间】:2018-01-22 23:16:06
【问题描述】:

我有一个ActiveRecord::Relation 对象,其中关系的对象有一些has_many 关联。还有另一段代码使用delete_all 删除与此关系关联但未通过关系的数据库行。即使不访问数据库,我也知道关系关联的新状态是什么,因此我希望能够在此关系中手动设置对象的属性,而无需再次接触数据库。

我发现this article 提到了write_attribute 方法。这可行,但看起来它已被弃用,所以我宁愿不使用。它还提到attributes= 是一种无需访问数据库即可执行此操作的方法。有没有什么东西可以达到write_attribute修改关系属性时不会访问数据库的效果?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


    【解决方案1】:

    assign_attributes

    类似于 update_attributes,无需保存。

    【讨论】:

    • 这似乎不适用于has_many 关系,如果我尝试将其设置为[] 之类的东西,它仍然会触及数据库。
    • 你是对的。我虽然您想更新模型属性而不是相关集合本身,但您的问题很清楚。
    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 2023-03-20
    • 2013-03-30
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多