3

だから私は@postを含まない投稿の配列を取得しようとしていました。驚いたことに、以下のコードにより、@postがデータベースから削除されました。

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

配列関数がデータベースから@postを削除するのはなぜですか?Railsはこの機能を拡張または上書きしますか?.destroy関数だけがデータベースからオブジェクトを削除できると思いましたか?.where関数が正確に何を返すのか、変数に@を使用する場合と使用しない場合の結果について混乱していると思います。

前もって感謝します!

4

1 に答える 1

7

@posts実行後に格納されるPost.where(:text => 'title')のは配列ではありません。これは一種のActiveRecord::Relationオブジェクトです。

パラメータとしてdeleteを呼び出すと@post、データベースからそのオブジェクトを削除するようにRailsに指示します。

于 2013-02-03T00:09:07.830 に答える