2011-08-09 5 views
3
  • 레일 2.3.8
  • Windows Server 2003의
  • 서버 SQL 서버 2005

음을 읽을이 오류가 전혀 전혀 의미가 있습니다. 나는 그것을 여러 번 점검했다. 다음은 콘솔의 예입니다.레일 2.3.8 속성이 오류

>> s = SaleItemArchive.find(118296) 
=> #<SaleItemArchive id: 118296, sale_id: 60308, item_id: 19825, quantity: 40, p rice: 0.75, created_at: "1998-08-10 00:00:00", quantity_shipped: 0> 
>> s.created_at 
=> nil 
>> s.attributes["created_at"] 
=> Mon Aug 10 00:00:00 UTC 1998 
>> 
>> s.class.match_attribute_method?("created_at") 
=> nil 
>> s.class.generated_methods.include?("created_at") 
=> false 
>> 

다음은 정상적인 예입니다.

>> s = SaleItemArchive.find(118297) 
=> #<SaleItemArchive id: 118297, sale_id: 60309, item_id: 2931, quantity: 100, price: 0.07, created_at: "1998-08-10 00:00:00", quantity_shipped: 0> 
>> s.created_at 
=> Mon, 10 Aug 1998 00:00:00 PDT -07:00 
>> s.attributes["created_at"] 
=> Mon Aug 10 00:00:00 UTC 1998 

나는 데이터베이스에서 수십 개의 다른 행을 테스트했으며, 이는 전체 데이터베이스에서 문제가되는 유일한 행입니다. 그것은 절대 의미가 없습니다. 주어진 오류가 없기 때문에 잘못된 것이 무엇인지 파악하는 데 시간이 걸렸습니다. 어떤 아이디어?

확인을 시도했는데 어떤 이유로 속성 메소드가 작성되지 않았습니다. 나는이 문제를 새로운 행으로 복사하려고 시도했다. 도와주세요.

+0

업데이트 됨. 그것을 확인하시기 바랍니다. –

+0

매우 이상합니다 ... 모델 코드를 보여주십시오? – fl00r

+1

MSSQL Management Studio에서 118296 행을 직접보고 다른 행과 비교 했습니까? 해당 행에 이상한 데이터가 없는지 확인하십시오. – Casper

답변

0

대부분의 경우 데이터베이스의 행이 누락되었습니다. 객체는 여전히 created_at 메소드에 응답하므로 (오류가 발생하지 않기 때문에) 유일한 설명은 열이 해당 행에 대해 null이라는 것입니다.

+0

'=> # ', 거기에'created_at'가 있습니다. 또한's.attributes [ "created_at"]'결과에 유의하십시오. ' –

+0

'created_at' 날짜를 어떻게 생성합니까? 보통 레코드와 나쁜 레코드에 대한'attributes [ 'created_at']'는 동일합니다. 그리고 일반 레코드에 대한's.created_at'는 UTC 대신에 id PDT를 반환합니다 (그래서 그들은 같은 시간이 아닌 것처럼 보입니다). . – Karl

+0

생성 된 Rails 접근 메소드는 시간대 조정을 적용합니다. 따라서's.created_at'와's.attributes [ "created_at"]'의 차이점이 있습니다. Mike의 'created_at'값이 어디에서 오는지 알 수 없습니다. –

관련 문제