복붙노트

[RUBY-ON-RAILS] 레일 - 사용 유형 열을 STI없이?

RUBY-ON-RAILS

레일 - 사용 유형 열을 STI없이?

내가 단일 테이블 상속을 호출하지 않고 형식이라는 칼럼을 사용하려면 (STI) - 나는 단지 문자열을 보유하고 정상적인 열 수를 입력합니다.

나는이 날을 기대 레일 단일 테이블 상속이 필요하고 단일 테이블 상속 메커니즘의 예외를 throw하지 않고이 작업을 수행 할 수는 서브 클래스를 찾지 못했습니다 어떻게 열 '유형'클래스를 저장하기 위해 예약되어 있기 때문에 ...이 오류가 발생합니다 상속의 경우 인치?

이 작업을 수행하는 방법에 어떤 아이디어?

해결법

  1. ==============================

    1.레일에서 3.1 set_inheritance_column은 그냥이 같은 이름으로 전무 사용할 수 있습니다되지 않습니다 :

    레일에서 3.1 set_inheritance_column은 그냥이 같은 이름으로 전무 사용할 수 있습니다되지 않습니다 :

    class Pancakes < ActiveRecord::Base
        self.inheritance_column = nil
        #...
    end
    
  2. ==============================

    2.당신은 set_inheritance_column를 사용하여 STI 열 이름을 대체 할 수 있습니다 :

    당신은 set_inheritance_column를 사용하여 STI 열 이름을 대체 할 수 있습니다 :

    class Pancakes < ActiveRecord::Base
        set_inheritance_column 'something_you_will_not_use'
        #...
    end
    

    그래서 당신은 그 set_inheritance_column에 아무것도 공급을 위해 사용하지 않을 것을 몇 가지 열 이름을 선택합니다.

  3. ==============================

    3.나는이 질문이 아니라 오래 알고 이것은 당신이 묻는 질문에서 조금 벗어난,하지만 난 대신 유형과 사용의 동의어를 검색하는 열 유형 또는 something_type 이름 싶은 충동을 느낄 때마다 나는 항상 무엇을 :

    나는이 질문이 아니라 오래 알고 이것은 당신이 묻는 질문에서 조금 벗어난,하지만 난 대신 유형과 사용의 동의어를 검색하는 열 유형 또는 something_type 이름 싶은 충동을 느낄 때마다 나는 항상 무엇을 :

    여기에 몇 가지 대안은 다음과 같습니다 종류, 분류, 다양한 카테고리, 세트, ​​장르, 종류, 순서 등

  4. ==============================

    4.4.x의 레일

    4.x의 레일

    나는 레일 4 응용 프로그램에 문제가 발생하지만, 당신이 그것을 사용할 수 있도록 레일 4의 set_inheritance_column 방법은 전혀 존재하지 않습니다.

    나를 위해 일한 솔루션은 다음과 같이 액티브의 inheritance_column 방법을 재정 의하여 단일 테이블 상속을 실행 중지하는 것이 었습니다 :

    class MyModel < ActiveRecord::Base
    
      private
    
      def self.inheritance_column
        nil
      end
    
    end
    

    희망이 도움이!

  5. ==============================

    5.모든 모델이 작업을 수행하려면, 당신은 이니셜이 붙어 있습니다.

    모든 모델이 작업을 수행하려면, 당신은 이니셜이 붙어 있습니다.

    ActiveSupport.on_load(:active_record) do
      class ::ActiveRecord::Base
        # disable STI to allow columns named "type"
        self.inheritance_column = :_type_disabled
      end
    end
    
  6. from https://stackoverflow.com/questions/7134559/rails-use-type-column-without-sti by cc-by-sa and MIT license