2011-01-02 1 views
1

하나의 레코드가있을 때에도 Rails3의 데이터베이스에서 배열을 얻는 방법?

Rails3에서

@messages = Message.where("recipient_deleted = ?", false).find_by_recipient_id(@user.id) 

제 견해로 @messages를 반복하고 다음과 같이 각 메시지를 출력합니다 :

<% for message in @messages %> 
    <%= message.sender_id %> 
    <%= message.created_at %> 
    <%= message.body %> 
<% end %> 

이것은 여러 메시지가있을 때 완벽하게 작동합니다.

문제가 하나의 메시지가있을 때 오류가 발생합니다. undefined method each'`

하나의 메시지 만있는 경우에도 레일스가 항상 메시지 배열을 반환하도록하려면 어떻게해야합니까? 그 each 항상 작동합니까?

고마워!

답변

4

이 시도 :

@messages.each do |message| 
    <%= message.sender_id %> 
    <%= message.created_at %> 
    <%= message.body %> 
end 

 

@messages = Message.where(recipient_deleted => false, :recipient_id => @user.id) 
난 당신이 문제가 당신이 일이 정말 이상한 중첩된다는 것입니다 것 같아요. 둘 다 where 절의 일부 여야합니다

+0

감사합니다. 당신이'where'가 SQL injection을 위해 자동으로 탈출하는 방법을 쓰고 있습니까? 너보다 실제로 –

+0

moreso :). 네가 실제로 도망 가지 않았어. 이스케이프 => .where ([ 'table.column =?', value]) [대괄호에주의하십시오.] 배열에 배치해야합니다. 이 문제가 당신에게 문제가 되었습니까? 그렇다면 올바른 것으로 표시 할 수 있습니까? – sethvargo

+0

@ seth.vargo : 아니요, 배열에서 탈출 할 필요가 없습니다. –

관련 문제