Я абсолютно новость для Rails и MongoDB. Я изучал учебники из хорошей книги и создал свое первое приложение на Rails с легкой копией Twitter. Все прошло хорошо и гладко.
Но как часть моего учебного процесса я хотел создать то же приложение, используя MongoDB, а не SGBD по умолчанию.
Поэтому я настроил mongo и установил гем mongo_mapper. Все было настроено правильно, следуя этому руководству: http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started. Затем я немного постарался, чтобы Rails сгенерировал работу, не выдавая мне ошибку --orm not selected. Чтобы обойти это, мне пришлось добавить гем rails3-generators и добавить его в Gemfile.
Как только все это было сделано, все работало нормально. Мне удалось успешно запустить сервер Rails.
Я добавил пользовательский контроллер благодаря генерации. Страница отлично работает и даже перечисляет пользователей, которых я ранее добавил:
Однако все остальные действия, показ, редактирование, удаление и т. Д. Не работают (создание работ, но затем оно показывается и появляются ошибки):
Это практически одна и та же ошибка для всех различных действий.
Единственное отличие, которое я могу сразу заметить, заключается в том, что с не MongoDB db идентификаторы пользователя начинаются с 1 и т. Д., Но здесь с MongoDB это выглядит как случайно сгенерированный идентификатор, который намного сложнее и это не тип int: 4d2ae91d4403baa84a000002
Я думаю, что это может создавать проблемы, поскольку все действия используют id в качестве параметра ... но я не знаю, как это исправить. Я посмотрел на код, сгенерированный ruby, и он мне подходит (очень похоже на код, сгенерированный для базы данных по умолчанию).
Любая помощь будет принята с благодарностью! Я не знаю, как продвинуться в своем проекте, не решив простой генерирующий код с помощью mongodb.
Спасибо
Alex
пс:
пожалуйста, чтобы я вообще не писал этот код. все было сгенерировано, поэтому я ожидал, что с самого начала буду работать ...
как указано здесь, код для users_controllers:
class UsersController < ApplicationController
# GET /users
# GET /users.xml
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end
# GET /users/1
# GET /users/1.xml
def show
@user = User.first(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end
# GET /users/new
# GET /users/new.xml
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
# GET /users/1/edit
def edit
@user = User.first(params[:id])
end
# POST /users
# POST /users.xml
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
# PUT /users/1
# PUT /users/1.xml
def update
@user = User.first(params[:id])
respond_to do |format|
if @user.update(params[:user])
format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.xml
def destroy
@user = User.first(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to(users_url) }
format.xml { head :ok }
end
end
end