データベースからレコードをフェッチする必要があります。いくつかの検証の後、カスタム検証が失敗した場合は、オブジェクトからレコードを削除する必要があります。
@posts = Post.all
いくつかのビジネスロジック検証を行った後、@postsオブジェクトにのみID1の投稿を保持したくないデータベースからだけでなく、@postsオブジェクトからその投稿を削除するにはどうすればよいですか。
データベースからレコードをフェッチする必要があります。いくつかの検証の後、カスタム検証が失敗した場合は、オブジェクトからレコードを削除する必要があります。
@posts = Post.all
いくつかのビジネスロジック検証を行った後、@postsオブジェクトにのみID1の投稿を保持したくないデータベースからだけでなく、@postsオブジェクトからその投稿を削除するにはどうすればよいですか。
データベースではなく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:)
selectメソッドを使用できます。
@posts.select do |post|
post.id == 1
#or any custom validation that returns true in case you want to keep the record
end