Обработка ошибок ActiveResource

Я искал некоторое время, и все же я не могу найти удовлетворительный ответ пока еще. У меня есть два приложения. FrontApp и BackApp. FrontApp имеет активный ресурс, который подражает модели в BackApp. Все образцовые проверки уровня живут в BackApp, и я должен обработать те проверки BackApp в FrontApp.

У меня есть следующий код активного ресурса:

class RemoteUser < ActiveResource::Base
  self.site = SITE
  self.format = :json
  self.element_name = "user"
end

Это подражает модели, которая является следующие

class User < ActiveRecord::Base

  attr_accessor :username, :password

  validates_presence_of :username
  validates_presence_of :password
end

Каждый раз, когда я создаю новый RemoteUser в переднем приложении; я называю .save на нем. например:

user = RemoteSession.new(:username => "user", :password => "")
user.save

Однако, так как пароль является пробелом, я должен пасовать назад ошибки к FrontApp от BackApp. Этого не происходит. Я просто не понимаю, как сделать это успешно. Это должно быть общим сценарием интеграции; но, кажется, нет хорошей документации для него?

Мой успокоительный контроллер, который действует как прокси, следующие:

class UsersController < ActionController::Base
  def create
    respond_to do |format|
      format.json do
        user = User.new(:username => params[:username], :password => params[:password])
        if user.save
          render :json => user
        else
          render :json => user.errors, :status => :unprocessable_entity
        end
      end
    end
  end
end

Что я пропускаю? Любая справка будет очень цениться.

Удачи

10
задан Priyank 22 June 2010 в 15:16
поделиться

2 ответа

Из исходного кода rails я понял, что причина, по которой ActiveResource не работает. «Не получить ошибок» было связано с тем, что я не назначал ошибки тегу «errors» в json. Это недокументировано, но необходимо. :)

Итак, мой код должен был быть:

render :json => {:errors => user.errors}, :status => :unprocessable_entity
13
ответ дан 3 December 2019 в 22:34
поделиться

В коде:

class UsersController < ActionController::Base
  def create
    respond_to do |format|
      format.json do
        user = User.new(:username => params[:username], :password => params[:password])
        if user.save
          render :json => user
        else
          render :json => user.errors, :status => :unprocessable_entity
        end
      end
    end
  end
end

попробуйте заменить

user = User.new(:username => params[:username], :password => params[:password])

на

user = User.new(params[:user])

. Ваша модель активного ресурса передает параметры, подобные хешу выше:

:user => { :username => "xpto", :password => "yst" }
1
ответ дан 3 December 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: