gpt4 book ai didi

ruby-on-rails - Rails 委托(delegate)设置值

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:38 24 4
gpt4 key购买 nike

我有一个 User.rb 模型和一个 UserSetting.rb 模型,我想委托(delegate)给它们(getter 和 setter 方法)。

在 user.rb 中

delegate :email_opt_in, :email_opt_in=, :to => :user_setting

乍一看效果很好。

user = User.find(1)
user.email_opt_in #=> false
user.email_opt_in = true
user.save
user.email_opt_in #=> true

但仔细观察,user.save 不会传播到 UserSetting 模型。

User.find(1).email_opt_in #=> false

(因此该值没有保存到数据库中)。

这是我的问题:如何让 UserSetting 在更改其属性之一然后由其用户保存时自动保存?

这应该仅在更改 UserSetting 属性时发生,否则每次将用户保存到数据库时,都会触发对数据库的额外不必要和不需要的写入。

最佳答案

在 user_setting 关联的用户模型中使用 autosave: true

class User < ActiveRecord::Base
has_one :user_setting, autosave: true

delegate :email_opt_in, :email_opt_in=, :to => :user_setting
end

关于ruby-on-rails - Rails 委托(delegate)设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com