gpt4 book ai didi

ruby-on-rails - 如何删除构建的资源?

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:14 25 4
gpt4 key购买 nike

class Post < ActiveRecord::Base
belongs_to :user
end

class User < ActiveRecord::Base
has_many :posts
end

我的问题是如何通过迭代删除构建的资源?可以说我有很多 BUILT(尚未在数据库中)帖子的用户。我怎样才能删除特定的帖子?我试过这种方法但没有:

@user.posts.each {|post| post.delete if post.content.nil? }

当然是遍历posts,执行'delete'方法,但是所有的posts都在它们开始的地方...

最佳答案

由于您正在使用未提交给数据库的构建对象,上的常规方法destroydelete >Post 对象将不起作用。您将不得不直接处理 @user.posts 集合。

我通常使用这种方法:

@user.posts.each { |post| @user.posts.destroy(post) if post.content.nil? }

它在 Rails 控制台上运行良好。

关于delete_alldestroy_all带条件

这两个方法会派上用场,但它们是 ActiveRecord::Relation 域的一部分。 @user.posts 集合是一个关联而非关系,因此它只暴露了没有条件的 delete_all 方法。

如果你想使用它们,你应该尝试这样的事情:

 Post.delete_all(user_id: @user, content: nil)

关于ruby-on-rails - 如何删除构建的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060803/

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