как перенести Datamapper на appengine - PullRequest
3 голосов
/ 15 мая 2010

Я изменил свою модель с

class Place
  include DataMapper::Resource
  has n, :trails

  property :id,           Serial
  property :name,         String,         :length => 140
  property :tag,          String,         :required => true
  timestamps :at 
end

до

class Place
  include DataMapper::Resource
  has n, :trails

  property :id,           Serial
  property :name,         String,         :length => 140
  property :tag,          String,         :required => true
  property :trail_count,  Integer,        :default => 0
  timestamps :at 
end

Я только добавил "свойство: trail_count, Integer,: default => 0"

и я хочу перенести существующую таблицу appengine, чтобы иметь дополнительное поле "trail_count" Я читал, что DataMapper.auto_upgrade! должен это сделать.

но я получаю ошибку "неопределенный метод` auto_upgrade! ' для DataMapper: модуль "

Подскажите, пожалуйста, как мне перенести модели DM?

Ответы [ 3 ]

1 голос
/ 15 мая 2010

После перезагрузки сервера в третий раз поле было чудесным образом добавлено.

Это все еще странный и не очень хороший способ миграции. как вы манипулируете данными без миграции? как разделение поля "полное имя" на поля имени и фамилии? для этого тебе нужна миграция ..

0 голосов
/ 06 мая 2016

Попробуйте потребовать гем dm-migrations.Так я решил проблему с Sinatra 1.4.7 и do_sqlite3 0.10.17.

require 'dm-migrations'

require 'rubygems'
require 'sinatra'
require 'dm-core'
require 'dm-timestamps'
require 'dm-sqlite-adapter'
require 'dm-migrations'

DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/adserver.db")

class Ad

  include DataMapper::Resource

  property :id,                     Serial
  property :title,                  String
  property :content,                Text
  property :width,                  Integer
  property :height,                 Integer
  property :filename,               String
  property :url,                    String
  property :is_active,              Boolean
  property :created_at,             DateTime
  property :updated_at,             DateTime
  property :size,                   Integer
  property :content_type,           String

end

# Create or upgrade all table at once, like magic
DataMapper.auto_upgrade!

ответ найден здесь

0 голосов
/ 07 июля 2010

Я искал ту же проблему, Рой, и похоже, что миграции не работают на движке приложения, использующем datamapper (или любой другой интерфейс). Это функция хранилища данных, и для обновления существующих записей базы данных вам придется запрашивать базу данных и обновлять несколько за раз, чтобы избежать ограничения скорости. источник

...