2012-08-01 2 views
2

데이터베이스에서 레코드를 가져와야하고 사용자 지정 유효성 검사가 실패 할 경우 몇 가지 유효성 검사 후 개체에서 레코드를 제거해야합니다.Activerecord 개체에서 인덱스 제거 데이터베이스에서 않습니다

@posts = Post.all

일부 비즈니스 로직 검증을하고 난 후에 나는 @posts이뿐만 아니라 객체에서 내가 해당 게시물을 삭제할 수있는 방법 객체에만 @posts에 ID 1 게시물을 유지하고 싶지 않아 데이터베이스에서. 당신이

#first convert the @post to array 

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

이 함께 게시물을 삭제하려고 만 액티브 결과의 배열이 아닌 데이터베이스에서 레코드를 삭제하려는 경우

@posts.select do |post| 
    post.id == 1 
    #or any custom validation that returns true in case you want to keep the record 
end 
+0

그냥 ID 1 게시물을 무시하지 않는 이유에 대한

+1

? – Dougui

+0

나는 그것이 실패 할 비즈니스 논리 유효성 검사에 대해 확신하지 못한다. 내가 어떻게 대답을 찾았는지 다음과 같이 삭제할 수 있습니다 : @posts = Posts.all 다음 @ posts.delete_at (0) – Baran

+0

으로 색인 0을 삭제하십시오. 코드가 매우 이상하게 보입니다. 더 나은 방법을 사용하고 있는지 잘 모르겠습니다. – Dougui

답변

2

당신은 선택 방법을 사용할 수 있습니다 ID = 1 (유일한 배열없는 데이터베이스)

또는

이 (10)는 배열 # 거부 또한 사용할 수 있습니다

(단 배열하지 데이터베이스) 일치하는 게시물을 삭제하지만 위의 솔루션을 갈 수 있도록하는 새로운 배열을 만들 것입니다. 질문 :

관련 문제