2012-01-10 4 views
0

레코드에서 ID를 가져오고 싶습니다. 내가 쓸 때레일스 검색 방법

이 :

@ticket.table = Table.find(:all, :conditions => {:train => @ticket.train, :datestart => @ticket.selldate}) 

나는 기록의 양을 반환 가정합니다.

도와주세요.

UPD : 내가 출력을 가지고

=> [#<Table id: 6, train: 1, time: "12-00", datestart: "2012-01-10", created_at: 
"2012-01-10 01:59:29", updated_at: "2012-01-10 01:59:29">] 

테이블 ID 내가 그것을 얻을 필요가 6입니다.

+0

(1) 출력과 (2) 예상 출력을 포함시켜야합니다. 당신은 어떤 산출물도 포함하고 있지 않습니다 - 어떻게 될지 알기 위해 어떻게해야할까요? 이 특별한 이슈에 대해서도 우리는'Table' 클래스에 대한 모델 정의를 볼 필요가 있습니다. – jefflunt

답변

2

id은 해당 개체의 속성 일뿐입니다. 간단히 전화 :

> @ticket.table.id 
=> 6 

Table 클래스 ActiveRecord::Base의 하위 클래스가 있다고 가정하면,이 유형의 모든 객체는 그냥 .id

당신이 발생하는 문제로 참조 할 수있는 id 속성을 가져야한다 위의 경우 을 사용하고 있습니다. 항상은 하나의 레코드 만 발견 되더라도 개체 컬렉션을 반환하므로 하나의 요소 만있는 배열을 가져 오는 원인이됩니다.

따라서, 어느 하나 개의 행을 반환 .find(:first, ...) 또는 .find(:all, ..., :limit => 1)을 사용하거나, 단순히 다음 방법 중 하나를 통해 상기 어레이의 첫 번째 요소를 참조 :

> @ticket.table.first.id 
=> 6 

또는

> @ticket.table[0].id 
=> 6 
+0

답변 해 주셔서 감사합니다. 그러나 그것은 그러한 배열에 메소드 ID가 없다고 말합니다 (!!!). 나는 이미 그 방법을 시도했다. – evilgeniuz

+0

오! 나는 그것을 처음 읽었을 때 배열이라고 생각했다. 내 대답을 업데이트했습니다. – jefflunt

+0

감사! 이미 하나의 운명을 저장했습니다. – evilgeniuz

2
@ticket.table = Table.find(:all, :conditions => {:train => @ticket.train, :datestart => @ticket.selldate}).map(&:id) 

은 모든 만족스러운 조건에 맞는 ID 배열을 제공합니다. 하나의 ID 만 원하면 아래 코드를 사용하십시오.

@ticket.table = Table.find(:all, :conditions => {:train => @ticket.train, :datestart => @ticket.selldate}).map(&:id).first 

희망이 있습니다.

+0

이것은 나에게 더 좋다. 고마워요! – evilgeniuz

+0

map 대신에 collect 메소드를 사용할 수 있습니다. 같은 것을 할지라도 프로가 사용하는 것을 보았습니다. –

관련 문제