如何知道一个模型是不是是新的?

Posted

技术标签:

【中文标题】如何知道一个模型是不是是新的?【英文标题】:How to know whether a model is new or not?如何知道一个模型是否是新的? 【发布时间】:2011-03-20 23:47:50 【问题描述】:
class Post < ActiveRecord::Base
end

post = Post.new

如何判断'post'是否是未从数据库中提取的新模型?

【问题讨论】:

请使用 4 个空格缩进将文本标记为代码。 【参考方案1】:
post.new_record?

【讨论】:

【参考方案2】:

如果对象尚未保存,ActiveRecord 的new_record? 方法将返回true

new_record? documentation

【讨论】:

new_record?是链接文档中列出的注释,我相信您的意思是:api.rubyonrails.org/classes/ActiveRecord/Persistence.html @jcarlson 看看我何时发布我的答案,并认为文档可能在此期间发生了变化。【参考方案3】:

你可以使用 post.persisted 吗?同样,如果它返回 false 意味着记录在新的

persisted?

【讨论】:

这更直接,因为使用new_record?,您需要测试false 以了解您的记录是否已保存。在我看来有点落后的逻辑,但每个人都有自己的逻辑! 来自hosh 提供的评论链接:“new_record? 不会检查记录是否已被销毁。”所以我想如果你正在检查记录是否被破坏,这是需要注意的。

以上是关于如何知道一个模型是不是是新的?的主要内容,如果未能解决你的问题,请参考以下文章

当猫鼬模型是新的时,有没有办法自动生成 ObjectId?

Rspec和FactoryGirl有几种型号

知道 NSManagedObject 实例是新的并且尚未持久化的最简单方法是啥?

新的人生阶段才是新的生活

Rust 如何知道哪些类型拥有资源?

Python BigQuery - 如果行是新的并忽略重复的行,如何附加到表中