2015-01-30 1 views
1

저는 데이타베이스에서 CRUD에 관한 좀비 코스를 처음으로 옮겼습니다.Rails for Zombies 1 : 테이블 이름이 액세스 방법과 일치하지 않습니까?

내가 이해할 수없고 설명이없는 것은 Zombies이라는 테이블이 있지만 사용자는 Zombie.find을 사용하여 액세스합니다. 방금 표준 루비에 대한 과정을 마치고 나에게는 클래스와 메소드처럼 보이지만 클래스는 테이블 이름과 동일하지 않습니다.

튜토리얼 비디오에서와 동일했지만 그의 테이블은 tweets 이었지만 Tweet.find을 사용하여 액세스했습니다. tweets.find일까요?

왜 테이블 이름이 해당 테이블에 액세스하는 것과 일치하지 않습니까? 어떤 이름을 테이블을 참조 할 때 테이블의 이름과 같지 않은지 어떻게 알 수 있습니까?

답변

3

레일즈는 모델 이름 Zombie을 자동으로 복수형 화하여 테이블 이름 zombies으로 사용합니다. 아이디어는 모델 이름이 하나의 좀비를 나타내는 반면 표는 많은 좀비를 나타내는 것입니다. 테이블을 검색 할 때 좀비라는 이름을 사용하는 것이 더 합리적이지만 레일은 모델에 대해 좀비라는 클래스를 만들고 좀비라는 다른 클래스를 만드는 대신 레일스가 좀비 클래스에 대한 메서드를 제공합니다. 상속을 통해, 당신은 테이블을 검색 할 수 있습니다.

코드의 여러 지점에서 모델 이름 Zombie을 사용해야하며 코드의 다른 지점에서는 테이블 이름 zombies - 경험과 문서를 사용해야하며 자세히 읽어야합니다 귀하의 튜토리얼의 사용 방법에 관해 알려드립니다.

레일은 모델 이름 마우스 - 마우스가 아니라 마우스 -를 복수화합니다.

은 나를 클래스

예, Zombie에게 모양에 클래스 이름입니다, 표준 루비의 과정을 마친. app/models/zombie.rb을 보면 클래스 정의가 표시됩니다.

db/migrate를 보면 20130731063014_create_zombies.rb이라는 파일이 표시되고 그 파일 안에 CreateZombies이라는 클래스가 있어야합니다. 레일은 모든 곳에서 클래스를 사용합니다.

+0

처음으로 나는 묻지 않고 언어를 변경 한 것을 처음 보았습니다. 내가 테이블에 전화하면 어떨까요? 좀비? – darylknight

+0

@codeknight, 참조 : http://stackoverflow.com/questions/4613574/how-do-i-explicitly-specify-a-models-table-name-mapping-in-rails. 그러나 레일은 매우 * 독단적 인 것이므로, 당신은 흐름을 따라 가야합니다. 레일에는 많은 톱니 바퀴와 기어가 동시에 움직이며, 무언가를 변경하면 기계가 멈출 수 있습니다. – 7stud

+0

@codeknight, 튜토리얼을 끝낸 후에는 https://www.railstutorial.org/로 가서 * read online free *를 클릭하십시오. 이 자습서는 최신 버전에서 단순화되었습니다. 테스트를 위해 rpsec을 배우고 싶다면 튜토리얼의 이전 버전 (여전히 레일 4)을 살펴보십시오. http://rails-4-0.railstutorial.org/ – 7stud