2010-12-13 5 views
2

Я новичок в работе с Ruby on Rails, и, хотя мне нравится организация и стандарты, я немного смущен тем, как сделать рельсы для меня в этом конкретном случае.Ruby on Rails с API REST

У меня есть веб-сервис, с которым я хочу использовать приложение для рельсов. Прямое подключение к базе данных было бы неплохо и мгновенно предоставить мне модели, которые мне нужны, чтобы приложение Rails работало.

Однако мне пришлось бы реплицировать всю логику, предоставляемую webservice (что не является тривиальным). Если я не сделал прямого подключения к базе данных, как бы я сохранял модели (например, модель пользователя).

Должен ли я создать отдельную базу данных, которая имитирует базу данных сервера, но никогда не взаимодействует с ней напрямую?

Заранее благодарю вас, сообщите нам, если вам нужно уточнение.

EDIT: Пример

  1. У меня есть приложение, которое получает рельсы на URL www.mywebservice: 8080.com/users/5
  2. служба возвращает JSON {имя: Foo, ник: бар, друг: baz}
  3. На этом этапе, как я могу указать рельсы, чтобы сделать объект User из того, что он только что получил, а затем сохранить его в базе данных? Или есть способ сохранить этот объект JSON?

ответ

1

Почему рельсы, если вам не нужны какие-либо его функции? Я бы рекомендовал начать с Sinatra, а затем добавить библиотеки, в которых вы нуждаетесь, как JSON, ActiveRecord (?), С которыми поставляется Rails.

Вы можете подключиться к любой базе данных, которую хотите, и вам не нужно использовать ActiveRecord, однако сложно понять, что вы действительно спрашиваете. Как этот титул связан с вопросом? Зачем нужен прямой БД? Вы не хотите создавать экземпляр объекта User, а затем делать user.to_json?

KISS! :)

+0

1. Мое название относится к вопросу, потому что я спрашиваю, как имитировать базу данных Отдыхают API, без фактического подключения к базе данных API (или даже, если мне нужно, чтобы имитировать его вообще). 2. Создание экземпляра объекта-пользователя означает, что у меня должна быть модель User - правильно? Разве это не означает, что мне нужно иметь соответствующую таблицу пользователей? – hwrdprkns

5

ActiveResource обрабатывает ваш случай использования просто отлично http://api.rubyonrails.org/classes/ActiveResource/Base.html

Что она делает это отражает на JSON, возвращаемой службой и поддельной вне объекта, чтобы сделать его похожим на реальный объект.

class User < ActiveResource::Base 
end 

user = User.find(1) 
puts user.name 
# "scott"