【问题标题】:How to turn off has_one saving on set?如何在片场关闭 has_one 保存?
【发布时间】:2016-06-06 23:34:07
【问题描述】:

在 Rails 中,我有一个 has_one 关联

class Car
  has_one :driver
end

当我这样做时

driver = Driver.new
car.driver = driver

它会在我准备好之前尝试保存我的驱动程序!我只想在调用 car.save 时保存驱动程序

如何让 Rails 4.2.* 更改保存顺序?

【问题讨论】:

  • 请详细描述问题。提供完整的控制器、汽车和驾驶员模型。

标签: ruby-on-rails-4 has-one


【解决方案1】:

我很确定它不会保留对数据库的更改。你可能会在记忆中看到它。

car.driver = driver
car.driver == driver # true
car.reload
car.driver == dirver # false

【讨论】:

  • 不幸的是,它确实存在。事实上,它会在我准备好之前尝试将其持久化,并给出错误 ActiveRecord::RecordNotSaved: Failed to save the new associated driver.
【解决方案2】:

我认为不调用 save 方法是不可能触发它的。

除非您在 Car model 中有触发它的方法,例如 autosave: true

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多