【问题标题】:Array.delete(object) removes from database?Array.delete(object) 从数据库中删除?
【发布时间】:2013-02-02 23:59:43
【问题描述】:

所以我试图获取一系列不包含@post 的帖子。令我惊讶的是,下面的代码导致@post 被从数据库中删除!

@post = Post.find(2)
@posts = Post.where(:text => "title")
@posts.delete(@post)

为什么数组函数会从数据库中删除@post? Rails 是否扩展或覆盖此功能?我以为只有 .destroy 函数可以从数据库中删除对象?我想我对 .where 函数究竟返回什么以及使用 @ 而不是将 @ 用于变量的后果感到困惑。

提前致谢!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    执行Post.where(:text => 'title') 之后存储在@posts 中的不是数组。这是一种ActiveRecord::Relation 对象。

    当您使用 @post 作为参数调用 delete 时,您是在告诉 Rails 从数据库中删除该对象。

    【讨论】:

    • 啊啊啊啊,说得有道理。感谢您的快速回复。
    • 这里是被调用方法的文档:api.rubyonrails.org/classes/ActiveRecord/…
    • 很高兴我能帮上忙!如果你想返回一个数组,你可以简单地做这样的事情:Post.where(:text => 'title').to_a
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2015-08-03
    • 2013-05-28
    相关资源
    最近更新 更多