Datamapper не может найти таблицу
У меня на Raspberry Pi работает приложение с Postgresql 9.1.
Моя первая итерация состояла в том, чтобы добавить записи о погоде в таблицу под названием "Погода". Это было успешно.
Моя следующая итерация заключается в использовании psychopg2
записывать записи из Python в другую таблицу под названием "погода". Это также успешно.
Что также должно быть успешным, так это изменить класс Weather в моем приложении на новые поля. Но DataMapper возвращает ошибку отображения:
@records = Weather.all(:order => :timestamp.desc)
ArgumentError at /
+options [:order]+ entry :timestamp does not map to a property in Weather
Перечитывание документов datamapper.org предполагает, что это как-то связано с именем моей таблицы, поэтому я перенес более старую таблицу "weathers" в другую, называемую "более старая", и удалил таблицу "weathers". Но DataMapper по-прежнему не может найти эту таблицу.
Моя среда Postgres с усеченным представлением целевой таблицы:
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+-------
public | customers | table | pi
public | older | table | pi
public | systemlog | table | pi
public | weather | table | pi
(4 rows)
Table "public.weather"
Column | Type | Modifiers | Storage | Description
-----------------------------+-----------------------------+------------------------------------------------------+----------+-------------
id | integer | not null default nextval('weather_id_seq'::regclass) | plain |
timestamp | timestamp without time zone | default now() | plain |
currentwindspeed | real | | plain |
bmp180temperature | integer | | plain |
Indexes:
"weather_pkey" PRIMARY KEY, btree (id)
Has OIDs: no
Мой класс Datamapper:
class Weather
include DataMapper::Resource
property :id, Serial
property :bmp180temperature, String
property :insidehumidity, String
property :totalrain, String
property :currentwinddirection, String
property :currentWindSpeed, String
property :timestamp, DateTime
end
DataMapper.finalize
Weather.auto_upgrade!
Поскольку это Ruby, я запустил IRb, потребовал гем Datamapper и получил:
records = Weather.all
DataObjects::SyntaxError: ERROR: column "bmp180temperature" does not exist
LINE 1: SELECT "id", "bmp180temperature", "insidehumidity", "totalra...
^
(code: 50360452, sql state: 42703, query: SELECT "id", "bmp180temperature", "insidehumidity", "totalrain", "currentwinddirection", "current_wind_speed", "timestamp" FROM "weathers" ORDER BY "id", uri: postgres:pi@localhost/postgres?scheme=postgres&user=pi&password=pw&host=localhost&port=&path=/postgres&query=&fragment=&adapter=postgres)
from /var/lib/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:147:in `execute_reader'
from /var/lib/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:147:in `block in read'
from /var/lib/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:276:in `with_connection'
Это заставляет меня думать, что он не находит правильный стол. Кажется, все в порядке с id
колонна, возможно.
Я вижу, что DataMapper используется для PHP в среде CodeIgniter, но я не уверен, что это тот же DataMapper, который я использую в Ruby.
Что я пропускаю, чтобы заставить DataMapper найти эту таблицу?