2014-10-17 3 views
0

Я пишу рубиновый камень, который импортирует данные в ActiveRecord, принимая в среде и классе, который пользователь хочет поместить в данные. Я могу подключиться к среде с ActiveRecord :: Base.establish_connection (...), но я не могу понять, как получить доступ к переданному классу, например, Location.create (...).Доступ к классу через ActiveRecord :: Base

Я не хочу передавать его через execute, потому что он пропустит проверки, но я сомневаюсь, что могу получить доступ к классу ActiveRecord.

Я нашел статью, что я думал, что бы помочь (http://erikonrails.snowedin.net/?p=212), но с этим я ставлю:

ActiveRecord::Base.const_get(model).create(attributes) 

и получать

uninitialized constant ActiveRecord::Base::Location (NameError) 

Когда я пытаюсь выше с ActiveRecord :: Base .connection.const_get (model) Я просто возвращаю огромный объект. Я просто ищу способ добраться до класса, как если бы я был в Rails, я мог просто вызвать User.create(). Любая помощь приветствуется.

+0

В ответ на первые два ответа, этот код осуществляется в гем не Рельсы сами, поэтому я сначала устанавливаю соединение. Я получаю «неинициализированный постоянный пользователь (NameError)» для подхода с константизацией и «неинициализированный постоянный модуль :: Пользователь (NameError)» для модуля. @spickermann – user3043604

+0

@ Зелёный пометка вас тоже – user3043604

ответ

0

Там нет необходимости называть это на ActiveRecord::Base, потому что модель является подклассом ActiveRecord::Base, но не является постоянной в ActiveRecord::Base пространства имен.

Вместо просто вызвать его на Module:

Module.const_get(model).create(attributes) 
+0

Я все еще получаю сообщение об ошибке. Чтобы уточнить, приведенный выше код находится в моем модуле gem, который не связан с ActiveRecord. Я подумал, что, возможно, был метод ActiveRecord, который дал бы мне модель класса. – user3043604

Смежные вопросы