2012-09-10 2 views
1

에 적용, 그것은 초보자 레일의 질문은, 난 그냥 솔루션을 찾고 있어요 기본적으로레일 : 추상 클래스는 비록 모델

이 권리의 논리를 얻기 위해, 여기에 유래를에 물어보고 싶은게 추상 클래스를 만들 수 있습니다 (레일에 대해 언급 했으므로 추상 모델과 비슷합니다). 내가 왜 그것을 이해할 수없는 이유는 항상 내 모델과 컨트롤러 (스캐 폴드가없는)를 생성하고 내가 미리 정의한 추상 클래스에서 상속받은 모델을 생성 할 수있는 온라인 솔루션을 찾을 수 없었기 때문입니다.

기본적으로, 눈, 코 등과 같은 일반적인 속성을 가진 클래스 생물가 있다고 가정하고 그 클래스에서 상속 인간 클래스를 만들려고합니다. 내가 어떻게 그럴 수 있겠 어. 터미널 명령 또는 그와 비슷한 옵션을 추가 할 수 있습니까?

감사합니다. 일반적인 솔루션과 효율적인 솔루션을 찾으십시오.

+0

기본 클래스를 확장하도록 생성 된 모델을 편집 하시겠습니까? 또는 믹스 인/모듈을 사용하거나 STI를 사용하십시오. –

답변

1

아니요, 레일 생성기에는이 기능이 없지만 항상 직접 할 수 있습니다.

# app/models/creature.rb 
class Creature 
    attr_accessor :eyes, :nose 
end 

# app/models/human.rb 
class Human < Creature 
end 

# app/models/dog.rb 
class Dog < Creature 
end 
+0

간단하고 놀라운 답변을 해주셔서 감사합니다! 1 개의 질문 질문. db를 마이그레이션 할 때 abstract 클래스의 특성이 Human 및 Dog 테이블에 적용됩니까? – Ali

+0

아니요.이 클래스는 DB에 지속성이 없습니다. 원하는대로 그들은 추상적입니다. 8) 데이터베이스에 속성을 저장하고 싶다면'ActiveRecord :: Base' 클래스를 상속 받아야합니다. 그것을 할 많은 패턴이 있습니다. @DaveNewton은 그의 의견에서 그들 중 일부에 대해 말했다. –

관련 문제