Rails 4.0에 기본 레코드를 추가하면 다형성 관계로 누락 된 기호가 발생합니다.

IdeaHat

저는 C ++ 프로그래머이므로 제목에 무엇이 들어가야할지 잘 모르겠습니다. 내가 생각하기에 가능한 한 예제를 제거했습니다.

레일스 4.1.5, 루비 2.0.0p353, Rubymine 6.3.3, Fedora 20

이 문제가 왜 발생하는지 모르겠습니다. 마이그레이션시 기본 관리자로 데이터베이스를 채우려 고하는데 .NET을 실행하는 동안 정의되지 않은 메서드가 나타납니다 rake db:migrate.

첫째, 모델

class Login < ActiveRecord::Base
  belongs_to :user, polymorphic: true
end


class Admin < ActiveRecord::Base
  has_one :login, :as=>:user, :dependent => :destroy, :autosave => true
  accepts_nested_attributes_for :login

  def method_missing(symbol, *args)
    self.login.send(symbol,*args)
  end

end

기본적으로 admin과 login 사이에는 "is_a"관계가 있습니다 (실제 애플리케이션에는 로그인이 될 수도있는 다른 레코드가 있지만 필드가 서로 다릅니다).

다음으로 마이그레이션

** _ create_logins.rb

class CreateLogins < ActiveRecord::Migration
  def change
    create_table :logins do |t|
      t.string :username
      t.string :password
      t.references :user, polymorphic: true
      t.timestamps
    end
  end
end

** _ create_admins.rb

class CreateAdmins < ActiveRecord::Migration
  def change
    create_table :admins do |t|
      t.string :name

      t.timestamps
    end
  end
end

이 응용 프로그램의 나머지 부분에서 잘 작동 : 나는에서 다형성 방식의 관리자 또는 무엇이든을 얻을 호출 할 수 login호출하여 login.user. 관리자 컨트롤러에서 관리자를 쉽게 추가 할 수 있습니다. 그들은 모두 데이터베이스를 잘 업데이트하고 있습니다. 모두가 좋은 시간을 보냈습니다.

마지막으로 "기본 관리자 만들기 :

** _ create_default_admin.rb

class CreateDefaultAdmin < ActiveRecord::Migration
  def self.up
    down();

    Admin.create(:name=>'Default Admin', :login_attributes=>{:username=>'admin', :password=>'password'})
  end

  def self.down
    Admin.delete_all
  end
end

따라서 단일 기본 관리자를 만들려고한다는 것을 알 수 있습니다.

내가 달리려고 할 때

rake db:drop
rake db:create
rake db:migrate

나는 얻다

undefined method `name=' for nil:NilClass/home/asdf/RubymineProjects/untitled/app/models/admin.rb:11:in `method_missing'

어떤 이유로 이름 기호가 생성되지 않고 로깅이 nil입니다.

method_missing 쇼에 중단 점을 넣는 것은 self.login사실 nil, 나는 이상하다고 생각했습니다. super에 중단 점을 놓으면 로그인이 생성됩니다. 중단 점을 super에 넣은 후에 실행하면 절대 method_missing. 대신

 unknown attribute: user_id/home/asdf/RubymineProjects/untitled/app/models/admin.rb:7:in `initialize'

질문

  1. 여기서 무슨 일이 일어나고 있습니까? (내가 뭘 잘못했고, 왜 잘못 됐고, 왜 이렇게 이상한 행동을하고있는 걸까?)
  2. 데이터베이스에 기본값을 추가하는 올바른 방법은 무엇입니까?

업데이트 : 생성을 이동하면 오류가 발생합니다 seed.rb. Update2 : 문제의 원인이 누락 된 방법 (문제가 해결 된 것으로 보이는 제거)이라는 것을 확인했습니다. 이제 누락 된 방법이 왜 나쁜지, 그리고 그것을 고치는 방법은 무엇입니까?

IdeaHat

문제는 내가 super메소드 누락을 호출하지 않는다는 것 입니다. super메시지가 처리되지 않으면 누락 된 메서드 를 호출해야합니다 .

더 많이 알수록

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 배치 암호 해독기에서 누락 된 연산자 오류가 발생합니다.

분류에서Dev

일대 다 관계가있는 HQL에서 "ORA-00936 : 누락 된 표현식"예외가 발생합니다.

분류에서Dev

이 for / if 코드를 R에서 실행할 때 "누락 된 값"오류가 발생합니다.

분류에서Dev

내 경로에서 이상한 오류가 발생합니다. "필수 키 누락"레일 4

분류에서Dev

Rails 새로 초기화 된 객체는 빈 레코드를 생성합니다.

분류에서Dev

R의 참조 변수를 기반으로 각 범주에서 누락 된 레코드 / 값의 수를 찾기 위해 데이터를 재구성합니다.

분류에서Dev

런타임에 동적 라이브러리를로드하면 일관성이없고 예상치 못한 결과가 발생하고 기호가 누락되고 PLT 항목이 비어 있습니다. 왜?

분류에서Dev

코드를 다시로드 / 다시 실행하기 위해 C를 누르면 오류가 발생합니까?

분류에서Dev

다시로드하기 전에 선언 된 개체를 참조합니다! Rails 콘솔에서 ArgumentError 발생

분류에서Dev

R에서 인수가 누락 된 경우 기본 인수를 사용하기 위해 다른 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

Android Studio에서 처음으로 자동 생성 된 코드를 실행하면 오류가 발생합니다.

분류에서Dev

중첩 된 구조에 기본값을 구현하면 스택 오버플로가 발생합니다.

분류에서Dev

중첩 된 구조에 기본값을 구현하면 스택 오버플로가 발생합니다.

분류에서Dev

Hibernate 4를 공급자로 사용하여 Spring JpaRepository를 사용하면 복합 기본 키가있는 테이블에서 IdentifierGenerationException이 발생합니다.

분류에서Dev

phpmyadmin은 관계보기에서 누락 된 항목을 표시 할 필드를 선택합니다.

분류에서Dev

Rails 4 범위는 필터링 된 레코드를 추가합니다.

분류에서Dev

조각을 추가하고 .replace ()를 호출하면 추가 된 조각에서 메모리 누수가 발생합니다.

분류에서Dev

다 대다 관계를 통해 테이블에서 누락 된 행 찾기

분류에서Dev

UWP 기본 페이지에 이벤트 처리기를 추가하면 AccessViolationException이 발생합니다.

분류에서Dev

기본 키가 제공된 다 대다 관계에 추가

분류에서Dev

일대 다 관계의 "상위"테이블에서 각 레코드에 대해 누락 된 "하위"레코드를 찾는 SQL

분류에서Dev

기본 날짜로 열을 추가하면 오류가 발생합니다.

분류에서Dev

stdin에서 CSV 파일을 복사하면 "열에 대한 누락 된 데이터"가 발생합니다.

분류에서Dev

django / south로 기존 모델에 ManyToManyField를 추가하면 오류가 발생합니다.

분류에서Dev

변수를 정의하고 정의 중에 문제가 발생하면 기본값으로 설정합니다.

분류에서Dev

Jira가 필수 필드가 누락되었다고 생각하기 때문에 REST 요청에서 오류가 발생합니다.

분류에서Dev

인수가 누락 된 경우 매크로를 다른 기본 매크로로 확장

분류에서Dev

OpenCV 3.2를 MFC 프로젝트에 연결하면 잘못된 메모리 누수가 발생합니다.

분류에서Dev

새 집계가 포함 된 확장 제어로 인해 "제어에 대해 정의 된 기본 집계없이 직접 하위를 추가 할 수 없음"오류가 발생합니다.

Related 관련 기사

  1. 1

    내 배치 암호 해독기에서 누락 된 연산자 오류가 발생합니다.

  2. 2

    일대 다 관계가있는 HQL에서 "ORA-00936 : 누락 된 표현식"예외가 발생합니다.

  3. 3

    이 for / if 코드를 R에서 실행할 때 "누락 된 값"오류가 발생합니다.

  4. 4

    내 경로에서 이상한 오류가 발생합니다. "필수 키 누락"레일 4

  5. 5

    Rails 새로 초기화 된 객체는 빈 레코드를 생성합니다.

  6. 6

    R의 참조 변수를 기반으로 각 범주에서 누락 된 레코드 / 값의 수를 찾기 위해 데이터를 재구성합니다.

  7. 7

    런타임에 동적 라이브러리를로드하면 일관성이없고 예상치 못한 결과가 발생하고 기호가 누락되고 PLT 항목이 비어 있습니다. 왜?

  8. 8

    코드를 다시로드 / 다시 실행하기 위해 C를 누르면 오류가 발생합니까?

  9. 9

    다시로드하기 전에 선언 된 개체를 참조합니다! Rails 콘솔에서 ArgumentError 발생

  10. 10

    R에서 인수가 누락 된 경우 기본 인수를 사용하기 위해 다른 함수를 호출하는 방법은 무엇입니까?

  11. 11

    Android Studio에서 처음으로 자동 생성 된 코드를 실행하면 오류가 발생합니다.

  12. 12

    중첩 된 구조에 기본값을 구현하면 스택 오버플로가 발생합니다.

  13. 13

    중첩 된 구조에 기본값을 구현하면 스택 오버플로가 발생합니다.

  14. 14

    Hibernate 4를 공급자로 사용하여 Spring JpaRepository를 사용하면 복합 기본 키가있는 테이블에서 IdentifierGenerationException이 발생합니다.

  15. 15

    phpmyadmin은 관계보기에서 누락 된 항목을 표시 할 필드를 선택합니다.

  16. 16

    Rails 4 범위는 필터링 된 레코드를 추가합니다.

  17. 17

    조각을 추가하고 .replace ()를 호출하면 추가 된 조각에서 메모리 누수가 발생합니다.

  18. 18

    다 대다 관계를 통해 테이블에서 누락 된 행 찾기

  19. 19

    UWP 기본 페이지에 이벤트 처리기를 추가하면 AccessViolationException이 발생합니다.

  20. 20

    기본 키가 제공된 다 대다 관계에 추가

  21. 21

    일대 다 관계의 "상위"테이블에서 각 레코드에 대해 누락 된 "하위"레코드를 찾는 SQL

  22. 22

    기본 날짜로 열을 추가하면 오류가 발생합니다.

  23. 23

    stdin에서 CSV 파일을 복사하면 "열에 대한 누락 된 데이터"가 발생합니다.

  24. 24

    django / south로 기존 모델에 ManyToManyField를 추가하면 오류가 발생합니다.

  25. 25

    변수를 정의하고 정의 중에 문제가 발생하면 기본값으로 설정합니다.

  26. 26

    Jira가 필수 필드가 누락되었다고 생각하기 때문에 REST 요청에서 오류가 발생합니다.

  27. 27

    인수가 누락 된 경우 매크로를 다른 기본 매크로로 확장

  28. 28

    OpenCV 3.2를 MFC 프로젝트에 연결하면 잘못된 메모리 누수가 발생합니다.

  29. 29

    새 집계가 포함 된 확장 제어로 인해 "제어에 대해 정의 된 기본 집계없이 직접 하위를 추가 할 수 없음"오류가 발생합니다.

뜨겁다태그

보관