gpt4 book ai didi

ruby-on-rails - Rails ActiveRecord 创建或查找

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:33 26 4
gpt4 key购买 nike

我正在开发 Rails 4 应用程序,在我的 api 发布方法中,我想根据用户尝试创建的内容查找记录,如果不存在,则创建它,如果确实更新了它具有的参数。我写了一些代码来实际执行此操作,但执行起来需要一些时间。有没有其他方法可以用更少的代码或查询来做同样的事情。

@picture = current_picture.posts.where(post_id: params[:id]).first_or_initialize
@picture.update_attributes(active: true, badge: parameters[:badge], identifier: parameters[:identifier])
render json: @picture

最佳答案

Rails 4.0 release notes表示 find_by_ 没有被弃用:

All dynamic methods except for find_by_... and find_by_...! are deprecated.

此外,根据 Rails 4.0 documentation , find_or_create_by 方法仍然可用,但已被重写以符合以下语法:

@picture = current_picture.posts.find_or_create_by(post_id: params[:id])

更新:

根据source code :

# rails/activerecord/lib/active_record/relation.rb
def find_or_create_by(attributes, &block)
find_by(attributes) || create(attributes, &block)
end

因此,理所当然的是,多个属性可以作为参数传递给 Rails 4 中的 find_or_create_by

关于ruby-on-rails - Rails ActiveRecord 创建或查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905038/

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