Способ вернуть True / False с рельсов API? - PullRequest
0 голосов
/ 01 декабря 2010

Мне нужно создать метод, который вызывается локальным приложением с двумя параметрами.как я могу вернуть истину или ложь тогда?с XML?мой метод выглядит так:

def check_license
  app_id = params[:id]
  app_sn = params[:sn]

  @license = License.find_by_id(app_id)

  respond_to do |format|
    if @license.app_serial == app_sn
      # should return true here
   else
     # should return false here
   end
  end
end

заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 01 декабря 2010

Сначала вам нужно определиться с форматом, который будет вызывать ваше другое внутреннее приложение. Популярные (и вменяемые) форматы: xml или json.

Затем, в вашем контроллере, вы должны обработать ответ в каждом из этих форматов:

resp = @license.app_serial == app_sn
respond_to do |format|
   format.json { render :json => resp }
   format.xml do
      if resp
        head :ok
      else
        render :xml => resp, :status => 403 # that's a failed authentication response
      end
   end
end
2 голосов
/ 01 декабря 2010
# if you can use json:
licensed = @license.app_serial == app_sn
respond_to do |format|
  format.js { render :json => licensed.to_json }
end
2 голосов
/ 01 декабря 2010

Я думаю, вы можете просто использовать:

def check_license
  app_id = params[:id]
  app_sn = params[:sn]

  @license = License.find_by_id(app_id)

  @license.app_serial == app_sn
end

Последняя строка в методе ruby ​​будет возвращаемым значением, поэтому метод здесь вернет результат этого последнего оператора отношения: либо true, либо false.

Вам не нужно respond_to |format|, если вы даете один и тот же ответ для всех форматов, что, я полагаю, и есть, учитывая, что вы возвращаете логическое значение.

0 голосов
/ 01 декабря 2010
  respond_to do |format|
    @license.app_serial == app_sn
   end

Rails автоматически вернет результат последней выполненной строки.

...