nil, :target_wind-6ren">
gpt4 book ai didi

ruby-on-rails - 在 Rails 中,为什么保存新记录会返回 nil,而且什么也没有保存?

转载 作者:行者123 更新时间:2023-12-04 05:49:11 26 4
gpt4 key购买 nike

我初始化一个 AdUnit 对象 au

au = AdUnit.new(cp)

哪里cp等于:

{:name=>"second56", :description=>nil, :target_window=>"BLANK", :explicitly_targeted=>false, :ad_unit_sizes_attributes=>[{:height=>90, :width=>728, :is_aspect_ratio=>false, :environment_type=>"BROWSER"}], :dfp_id=>"22319511", :parent_id_dfp=>"22261791"}

和结果对象 au

#<AdUnit id: nil, dfp_id: "22319511", parent_id_dfp: "22261791", parent_id_bulk: nil, name: "second56", description: nil, target_window: "BLANK", explicitly_targeted: false, created_at: nil, updated_at: nil>

此时,au.valid?au.new_record?都返回 true .

如果我这样做 au.save (或 au.save! 就此而言)结果是 nil并且没有任何内容保存到数据库中。但如果我这样做

aud = au.dup
aud.save

结果是true并保存记录。

我可以使用重复的解决方法保存我的对象,但这对我来说真的很奇怪。任何人都可以就为什么会发生这种情况提出任何想法吗?下面是来自 Rails 控制台的 2 个保存语句的 SQL 片段。

提前感谢所有 Rails 专家。

返回 nil并且不保存:

SQL (1.0ms) INSERT INTO "ad_units" ("created_at", "description", "dfp_id", "explicitly_targeted", "name", "parent_id_bulk", "parent_id_dfp", "target_window", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [["created_at", Wed, 04 Jan 2012 17:28:37 UTC +00:00], ["description", nil], ["dfp_id", "22400631"], ["explicitly_targeted", false], ["name", "zapiFirstLevel366"], ["parent_id_bulk", nil], ["parent_id_dfp", "1166751"], ["target_window", "BLANK"], ["updated_at", Wed, 04 Jan 2012 17:28:37 UTC +00:00]]
=> nil

返回 true并保存:

SQL (0.9ms) INSERT INTO "ad_units" ("created_at", "description", "dfp_id", "explicitly_targeted", "name", "parent_id_bulk", "parent_id_dfp", "target_window", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [["created_at", Wed, 04 Jan 2012 17:29:58 UTC +00:00], ["description", nil], ["dfp_id", "22400631"], ["explicitly_targeted", false], ["name", "zapiFirstLevel366"], ["parent_id_bulk", nil], ["parent_id_dfp", "1166751"], ["target_window", "BLANK"], ["updated_at", Wed, 04 Jan 2012 17:29:58 UTC +00:00]]
=> true

最佳答案

好的,这是由于当 AdUnit 与 AdUnitSize 具有 has_and_belongs_to_many 关系时使用 accepts_nested_attributes_for 引起的。所以我了解到这两个不能很好地协同工作。

唯一的问题是,在某个地方发出警告可能会更好,而不是必须从 .save 中找出它,在 有效时返回 nil? = true 对象而不是 true 或 false。

关于ruby-on-rails - 在 Rails 中,为什么保存新记录会返回 nil,而且什么也没有保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731232/

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