2013-03-20 4 views
1

이것은 Ruby에서 메소드와 클래스가 정의되는 방법과 API 문서를 읽는 방법에 대한 질문입니다. 즉 다음 create_table 방법을 정의하는 방법/수입/그래서 같은 코드에서, ActiveRecord::Migration에서 사용할 수 있습니다 상속 :Rails Migration 클래스에서 create_table과 같은 메소드를 어떻게 사용할 수 있습니까?

class CreateProducts < ActiveRecord::Migration 
    def up 
    create_table :products do |t| 
     t.string :name 
     ... 

자바 세계에서오고, 나는 기본 클래스 또는 유지 mixin에 대한 링크를 제공하기 위해 API docs 예상 모든 것이 정의되었습니다. 그러나 내가 Migration에 대한 페이지를 보면 도움이되는 손으로 문서를 볼 수는 있지만 create_table의 가장 상세한, 신뢰할 수있는 정의에 대한 링크는 없습니다. 나는 ActiveRecord::ConnectionAdapters::SchemaStatements에 그것을 찾기 위해 구글을 사용하지만, 심지어 두 파일의 소스 코드를보고 : 나는 Migration의 범위로된다 방법 create_table 표시되지 않습니다

Migration in git
create_table in git

.

답변

1

이러한 방법은이 클래스에서 동적으로 생성됩니다 그들은 CommandRecorder 클래스에서 동적으로 사람들을 추가 https://github.com/rails/rails/blob/d68e299167c8da07dc63a55197313b5c3396c3a4/activerecord/lib/active_record/migration/command_recorder.rb

,이 라인 :

class Migration 
    autoload :CommandRecorder, 'active_record/migration/command_recorder' 

마이그레이션 클래스가 사용할 수 있습니다.

+0

이 메서드는 클래스 eval 클래스 인 CommandRecorder 내부에서만 정의되고 있다고 생각합니다. – Kaeros

+0

@Kaeros는 수정 해 주셔서 고마워요, 내 전화에서 그것을보고있었습니다. 나는 그에 따라 편집했다. – fmendez

+0

Migration에서 CommandRecorder를로드하지 않습니까? 그래서'Migration :: CommandRecorder.new.create_table'은 말할 수 있지만'Migration.new.create_table'는 말할 수 없습니다. –

관련 문제