2011-06-14 1 views
3

여기서 이름 오류가 발생하는 이유를 확인할 수 없습니다. DataMapper를 처음 사용했지만 연관성을 보완하려고 노력했습니다. 어떤 도움을 주셔서 감사합니다.child_model (NameError)을 찾을 수 없습니다.

사용자 :

class User 
    include DataMapper::Resource 

    property :id,   Serial, :key => true 
    property :first_name, String 
    property :last_name,  String 
    property :company,  String 
    property :city,   String 
    property :country,  String 
    property :mobile_number, Integer 
    property :email_address, String 
    property :shahash,  String 
    property :isRegistered, Boolean 

    belongs_to :event, :required => true 
end 

DataMapper.auto_upgrade! 

이벤트 :

class Event 
    include DataMapper::Resource 

    property :id,   Serial, :key => true 
    property :name,  String 
    property :occuring, DateTime 

    has n, :user 
end 

DataMapper.auto_upgrade! 
+0

'has n, : users', 복수형을 사용해야합니다. – ujifgc

+0

'has n, : users '및'belongs_to : event'를 사용할 때 여전히 문제가 있습니다 다른 뭔가가 있습니까? – al3xnull

답변

6

나는 문제가 각 모델 정의 후 DataMapper.auto_upgrade!를 호출하고 생각합니다. 하나의 모델을 정의한 후에 호출하면 자식 모델이 없습니다. 대신, 다음 정의 및/또는 귀하의 모든 모델을 필요로한다는 수행

DataMapper.finalize  # set up all relationships properly 
         # and do a basic model sanity check 
DataMapper.auto_upgrade! # create database table if it doesn't exist 
+0

내 모델을/models 아래의 개별 파일로 분류했습니다. 모든 모델을 요구 한 후에'DataMapper.finalize/DataMapper.auto_upgrade! '를 호출해야합니까? (죄송합니다. 여전히 ORM 및 Ruby에 익숙합니다.) – al3xnull

+0

예, 모든 모델을 요구 한 후에 전화하십시오. – namelessjon

+0

그 것처럼 보입니다 =] 감사합니다. – al3xnull

0

이 모델 디렉토리에서 init 파일을 추가하고 예에서 마무리 문을 제거합니다 (로 당신의 DataMapper.finalize 문을 모두 이동 응용 프로그램 파일에서 다음

require_relative 'file_name' 
require_relative 'another_model_file_name' 

DataMapper.finalize 

init.rb 개별 모델 파일)

응용 프로그램/모델/초기화 파일이 필요

require_relative 'models/init'