检查Ruby on Rails中是否从数据库中新创建或检索了对象

Sch*_*ems 1 ruby ruby-on-rails

我正在使用Ruby on Rails,我有一个find_or_create_by_custom_stuff方法.但是,我想知道我找回的对象是否已找到,或者是否已创建.像这样的东西

user = User.find_or_create_by_custom_stuff(params[:user])
if user.was_found_from_database?
  ...
elsif user.was_recently_created?
  ...
end
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在不依赖用户的created_at时间戳的情况下做到这一点?

Joe*_*MAR 11

你有ActiveRecord方法

@instance.new_record?
Run Code Online (Sandbox Code Playgroud)

为了你

user = User.find_or_create(params[:user])
user.new_record?
Run Code Online (Sandbox Code Playgroud)

注意 :

.new_record? => NOT RECORDED IN DATABASE 
Run Code Online (Sandbox Code Playgroud)

  • 。新纪录?在这种情况下,将始终返回 false (用户是在 User.find_or_create 之后创建的数据库对象) (2认同)