2010-08-04 5 views
0

이전을 통해 레일스의 DB에 열을 추가하고 new.html.erb를 업데이트하여 필드를 양식에 추가했습니다.레일스에 모델 필드를 추가하지 않고 쿼리를 삽입합니다.

올바른 데이터는 요청 매개 변수에 있지만 생성 된 삽입 쿼리에는 항상 해당 열에 대해 null이 있습니다. 여기

{"commit"=>"Create", 
    "assignment"=>{"start_date"=>"08/04/2010", 
    "project_id"=>"5", 
    "allotment"=>"50", 
    "person_id"=>"33", 
    "end_date"=>"08/05/2010"}, 
    "authenticity_token"=>"8f157a2a220caf716607162ce9557ab6505aab1a"} 

및 널 열 보여주는 쿼리 결과 오류입니다 : 여기

Mysql::Error: Column 'end_date' cannot be null: 
INSERT INTO `assignments` (`start_date`, `created_at`, `project_id`, `updated_at`, `allotment`, `person_id`, `end_date`) 
VALUES('2010-08-04', '2010-08-04 03:36:21', 5, '2010-08-04 03:36:21', 50, 33, NULL) 

문제의 마이그레이션 것 :

class ChangeDates < ActiveRecord::Migration 
    def self.up 
    add_column :assignments, :end_date, :date, :null => false 
    rename_column :assignments, :date, :start_date 
    end 

    def self.down 
    remove_column :assignments, :end_date 
    rename_column :assignments, :start_date, :date 
    end 
end 

여기

는 요청 PARAMS 있습니다 나는 무엇이 잘못되었는지 알 수 없다. 나는 롤백했고 행운을 빌어 2 번 변경 사항을 마이그레이션했습니다. 나는 혼란 스럽다.

+0

이전 코드를 게시하십시오. –

+0

당신이 사용하고 있습니까? attr_accessible 또는 무엇입니까? 할당 모델 – elmac

+0

을 게시 할 수 있습니까? 실제로 attr_accessor에서 사용하고있었습니다. 댓글을 달아서 문제를 해결했습니다! 정말 고마워. 그 이유가 무엇입니까? 답변을 게시하면 해결 방법으로 표시됩니다. 감사. – evanmcd

답변

1

attr_accessor에 대한 질문에 답하기 위해 scope는 클래스 메서드 앞에 접근 자 메서드를 호출하므로 접근 자에 값을 저장했지만 저장자가 호출되면 메서드 호출을 반환했습니다. 이 내용이 예제로 명확 해지기를 바랍니다. http://codepad.org/gAppUMc4

나는 여러 번 같은 일을했습니다. 그 초조 한 초조.

+0

매우 흥미 롭습니다. 그리고 그 모든 것을 직관적으로 말하지 않아야합니다 (적어도 나에게). 다행히 저를 도와 줄 사람들이 있습니다 :) 감사합니다. – evanmcd

+0

루비의 아름다움도 세부 사항입니다. 마술을 즐긴다. –

0

아직 웹 서버를 다시 시작하지 않은 경우 시도해보십시오. Rails가 열 이름을 캐싱하고있을 수 있습니다.

어떤 Rails 버전과 어떤 웹 서버를 실행하고 있습니까?

+0

고마워, 나는 그것을 시도했다. Mongrel 1.1.5와 함께 레일즈 2.2.2 사용하기 – evanmcd

관련 문제