:clie-6ren">
gpt4 book ai didi

ruby-on-rails-3 - 在Rails版本之间迁移后,ActiveRecord关联会在分配时自动保存,如何禁用它?

转载 作者:行者123 更新时间:2023-12-04 07:42:34 25 4
gpt4 key购买 nike

我正在尝试将我的应用程序从Rails 3.0.7迁移到Rails 3.1.3。我有客户模型

class Client::Client < ActiveRecord::Base
has_one :contact_address, :class_name => "Address", :foreign_key => :client_id, :conditions => ["kind = ? and state = ?", 2, 1]
end

在 Controller 的edit方法中,我执行以下代码:
def edit
@client = params[:type].classify.constantize.find params[:id]
@client.contact_address = Address.new(:kind => 2) if @client.contact_address.blank?
end

在这段代码的第二行中,我得到了错误:
Failed to save the new associated contact_address.

因此,似乎对@ client.contact_address的分配以某种方式触发了contact_address对象的保存方法...我不希望...这是一些新的Rails 3.1.x行为吗?我只想在调用.save时保存关联对象!在父模型上-这对我来说太神奇了。我可以在某处禁用此行为吗?

最佳答案

我已经找到解决方法。在 Controller 的edit方法中,我使用了build方法而不是分配方法:

def edit
@client = params[:type].classify.constantize.find params[:id]
@client.build_contact_address(:kind => 2) if @client.contact_address.blank?
end

但是我仍然很想在某处阅读这种新行为(我的谷歌搜索未成功)。也许有人可以提供链接?

关于ruby-on-rails-3 - 在Rails版本之间迁移后,ActiveRecord关联会在分配时自动保存,如何禁用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948998/

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