Не удается найти child_model (NameError) - PullRequest
3 голосов
/ 15 июня 2011

Я не могу определить, почему я получаю ошибку имени здесь.Я новичок в DataMapper, но пытаюсь ассоциаций вниз.Любая помощь приветствуется.

Пользователь:

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!

Ответы [ 2 ]

6 голосов
/ 15 июня 2011

Я думаю, проблема в том, что вы звоните 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 голосов
/ 11 ноября 2013

Добавьте файл инициализации в каталог моделей и перенесите в него все ваши операторы DataMapper.finalize (т.е. удалите оператор finalize из ваших отдельных файлов моделей)

приложение / модели / init.rb

require_relative 'file_name'
require_relative 'another_model_file_name'

DataMapper.finalize

Тогда в вашем файле приложения требуется файл инициализации

require_relative 'models/init'
...