2011-08-09 27 views
3
  • のRails 2.3.8
  • のWindows Server 2003
  • サーバーのSQL Server 2005の

オムを読んで、このエラーは全く全く意味がありません。私はそれを数回チェックした。次に、コンソールの例を示します。のRails 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'の日付はどうやって生成していますか?通常のレコードの 's.created_at'はUTCの代わりにID PDTを返しています(同じ時刻ではないように見えますか?) 。 – Karl

+0

生成されたRailsアクセサメソッドは、タイムゾーン調整を適用します。つまり、 's.created_at'と' s.attributes ["created_at"] 'の違いです。 Mikeの 'created_at'値がどこから来ているのか分かりません。 –

関連する問題