2

データベースからレコードをフェッチする必要があります。いくつかの検証の後、カスタム検証が失敗した場合は、オブジェクトからレコードを削除する必要があります。

@posts = Post.all

いくつかのビジネスロジック検証を行った後、@postsオブジェクトにのみID1の投稿を保持したくないデータベースからだけでなく、@postsオブジェクトからその投稿を削除するにはどうすればよいですか。

4

2 に答える 2

3

データベースではなくactiverecordの結果の配列からのみレコードを削除したい場合は、これを試してください

#first convert the @post to array

@post.to_a.delete_if{|post| post.id == 1 }

これにより、id = 1の投稿が削除されます(データベースからではなく、アレイからのみ)

また

#pass the object to delete

post = @post.first
@post.to_a.delete(post)

これにより、一致する投稿が削除されます(データベースからではなく配列からのみ)

Array#rejectを使用することもできますが、それによって新しい配列が作成されるため、上記のソリューションを使用します。

質問の+1:)

于 2012-08-01T19:26:27.693 に答える
2

selectメソッドを使用できます。

@posts.select do |post| 
  post.id == 1 
  #or any custom validation that returns true in case you want to keep the record 
end
于 2012-08-01T18:59:45.687 に答える