Как определить, существует ли таблица в DataMapper - PullRequest
0 голосов
/ 18 октября 2010

Этот код не выполняется в последней строке, в частности, из-за проверки table_exists?Как мне правильно сделать это в Datamapper?


require 'sinatra'
require 'DataMapper'

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

class Post
    include DataMapper::Resource
    property :id, Serial
    property :title, String
    property :body, Text
    property :created_at, DateTime
end

DataMapper.finalize

# automatically create the post table
DataMapper.auto_migrate! unless Post.table_exists?

Ответы [ 2 ]

5 голосов
/ 14 ноября 2010

Justin

Если вам требуется dm-migrations (что в основном означает, что вы все равно используете адаптер RDBMS), вы можете сделать следующее, чтобы узнать, существует ли таблица (или столбец внутри этой таблицы).

# Find out if the table named 'people' exists
DataMapper.repository(:default).adapter.storage_exists?('people')

# Find out if there's a 'name' column in the 'people' table
DataMapper.repository(:default).adapter.field_exists?('people', 'name')

Обратите внимание, что эти методы API смешиваются с adapter, только если требуется dm-migrations, и вы используете DataObjectsAdapter потомок.

1 голос
/ 18 октября 2010

Вы можете использовать DataMapper.auto_update!, который должен быть неразрушающим (добавляет только таблицы / столбцы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...