gpt4 book ai didi

ruby-on-rails - Rails 模型似乎有效但未验证

转载 作者:搜寻专家 更新时间:2023-10-30 21:41:48 24 4
gpt4 key购买 nike

我的模型看起来像这样,没什么特别的:

# Table name: invoices
#
# id :integer not null, primary key
# total :float
# discount :float
# description :text
# created_at :datetime not null
# updated_at :datetime not null
# company_id :integer
# secret :string(255)
# address_id :integer
# price_per_credit :float
# paid :boolean

我可以在服务器和 Rails 控制台中创建它的实例,如果我对它们调用 .valid?,这些实例将返回 true(出于测试目的,我关闭了所有验证)。

1.9.3p194 :001 > i = Invoice.new
=> #<Invoice id: nil, total: nil, discount: nil, description: nil, created_at: nil, updated_at: nil, company_id: nil, secret: nil, address_id: nil, price_per_credit: nil, paid: nil>
1.9.3p194 :002 > i.valid?
=> true

但是,由于某些原因,我无法将这些实例保存到数据库中。

1.9.3p194 :003 > i.save
(0.3ms) begin transaction
(0.1ms) rollback transaction
=> false

我在本地使用的是 sqlite,生产服务器正在运行 MySQL,但两者都显示了这种行为。我不太确定如何调试它。我确实运行了 db:migrate,并且我的 gems 是最新的。我该如何解决这个问题?

最佳答案

原来我有一个返回 false 的 before_create 过滤器,导致保存过程停止。为了解决这个问题,我在类中添加了 nil,如下所示:

# BEFORE:
def set_paid
self.paid = false
end

# AFTER:
def set_paid
self.paid = false
nil
end

希望这对其他人也有帮助!

关于ruby-on-rails - Rails 模型似乎有效但未验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290822/

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