2013-03-12 2 views
0

레코드의 타임 스탬프 속성 (datetime 유형)을 0으로 설정했습니다. 나는 그것을 (또는 아닙니다) 저장했습니다. 다시 0으로 설정하려고했습니다. ActiveRecord 속성을 설정할 수 없음 - Fixnum으로 고정됨

a = MyModel.last # => #<MyModel id:... 
a.updated_at  # => Tue, 12 Mar 2013 01:36:17 UTC +00:00 
a.updated_at = 0 # => 0 
a.updated_at = 0 

내가 가지고 :

NoMethodError: undefined method `change' for 0:Fixnum 

이도 레일을 다시 시작하고 데이터베이스 (로컬 sqlite3를)에서 기록을 다시로드 한 후 일어났다. 도움!

편집 : 레일 콘솔 스택 추적이 더 나는 서버에서 얻는 것보다는 조명된다

마법 열 형식 날짜의 때문에
NoMethodError: undefined method `change' for 0:Fixnum 
     from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/attribute_methods/time_zone_conversion.rb:69:in `round_usec' 
     from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.11/lib/active_record/attribute_methods/time_zone_conversion.rb:46:in `fields_updasqliteted_at=' 
     from (irb):23 
     from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
     from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
     from /Users/nolan/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
     from script/rails:8:in `require' 
     from script/rails:8:in `<main>' 
+0

'변경'이란 무엇입니까? 그것이 MyModel의 속성입니까? – AdamT

+0

ActiveRecord가 레코드의 값을 변경하기 위해 호출하는 것은 아닙니다 ...? :) 마이 그 레이션 방법 이외에, 나는 전혀 모른다. –

+0

그냥 확인해도 다른 모델에서도 마찬가지입니다 ... –

답변

1

당신은 레일 콜백 및 유효성 검사를 우회 update_column를 사용할 수 있습니다.

이 특별한 경우에 update_column을 사용하면 RoR에 의해 사용 된 시간대 및 다른 메소드 콜백을 피할 수 있습니다.이 콜백은 FixNum을 예상하지 않았기 때문에 실패합니다.

0

, 당신은 그것을 정수를 할당 할 수 없습니다. 당신은 다음 링크를 사용하려면 다음

Ruby/Rails: convert int to time OR get time from integer?

+0

일단 정수로 지정하면 (실수로), 그것은 설정 불가능해야합니까 ?? –

+0

정수를 지정하면 위 오류 (게시 한 오류)가 발생합니다. 당신은 0 대신 nil 값을 할당 할 수 있습니다. – nilay

+0

예, 그렇지만 정수로 설정하면 되돌릴 수 없습니까? –

관련 문제