2013-04-18 1 views
1

sqllite에서 mysql (처음부터 mysql을 사용하여 동일한 작업 공간을 다시 만들었습니다.Mysql2 :: 오류 : 잘못된 날짜 값 : '---! ruby ​​/ hash : ActiveSupport :: HashWithIndifferentAccess

코드는 sqllite와 잘 작동하지만 mysql을 사용하면 오류가 발생합니다.

내 코드 뷰에서 선택한 날짜 통해 날짜에 소요
development: 
    adapter: mysql2 
    database: dev 
    username: root 
    password: 
    host: localhost 
    pool: 5 

:

t.string "firstName" 
t.string "lastName" 
t.string "Email" 
t.string "password" 
t.date  "dob" 
:

<%= date_select(:dob, NIL, :use_short_month => true, :start_year => Time.now.year - 100, 
         :end_year => Time.now.year, :order => [:day, :month, :year]) %> 

모델은 다음과 같습니다이 내 database.yml을이 같은 모습입니다

그러나 컨트롤러의 다음 코드를 통한 삽입이 실패합니다.

@user.dob = params[:dob] 
내가 꽤 범위를 봤하지만,이에 대한 참조를 찾을 수 couldnt는 한

Mysql2::Error: Incorrect date value: '--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess 
(1i): '2013' 
(2i): '4' 
(3i): '18' 
' for column 'dob' at row 1: INSERT INTO `users` (`Email`, `created_at`, `dob`, `firstName`, `lastName`, `password`, `personalEmail`, `updated_at`) VALUES ('[email protected]', '2013-04-18 15:46:26', '--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\n(1i): \'2013\'\n(2i): \'4\'\n(3i): \'18\'\n', 'ABC', 'XYZ', 22, NULL, 'ab4d8d2a5f480a137067da17100271cd176607a1', '2013-04-18 15:46:26') 

:

이것은 내가 오류입니다. 리드에 대한 감사 또는 이에 대한 도움.

답변

1

문제는 다중 매개 변수입니다. rails date_select helper는 3 개의 다른 매개 변수를 컨트롤러에 전달하는 3 개의 드롭 다운을 생성합니다. 컨트롤러에서 질량 지정을 사용하면 레일즈가 마술처럼이 3 개의 값을 1 개의 날짜 값으로 변환합니다. 이 (아주 오래된) 블로그 게시물은 대량 할당없이 수행하는 방법을 보여줍니다. http://www.springenwerk.com/2008/05/set-date-attribute-from-dateselect.html 그러나이 게시물은 다소 오래되었으며, 지금까지 더 좋은 방법이 될 수있었습니다.

+0

변환시 완벽하게 작동합니다. – Bharath

0

뭐가 확실한가요 dat 개체가 mysql 데이터베이스에 대해 올바르게 포맷되지 않았습니다. 같은 것을 시도하십시오

@user.dob = params[:dob].to_date 

어떻게 작동하는지 보려면 다른 방법으로 날짜 개체의 서식을 지정하십시오. rails console을 열어 수동으로 작업 해 보는 것도 도움이 될 수 있습니다. 그게 어떻게되는지 알려줘.

- 브라이언

관련 문제