Ir para o conteúdo
ou

Software livre Brasil

Leandro Nunes dos Santos

Nuvem de Marcadores

 Voltar a Blog
Tela cheia

Acessando objetos ActiveRecord utilizando ActiveResource

17 de Maio de 2009, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 873 vezes

Eu perdi algum tempo procurando uma forma de acessar objetos via ActiveResource de uma aplicação servidora para uma cliente.

O meu problema era que o nome do meu resource na aplicação cliente não era a correspondência exata do nome esperado no meu servidor.

Trocando em miúdos…

Eu tenho uma aplicação servidora com o seguinte controller:


class CategoriesController < ApplicationController

  def index
    @categories = Category.all
    respond_to do |format|
      format.json { render :json => @categories }
    end
  end

end

e outra aplicação cliente com o seguinte resource:


class RemoteCategory < ActiveResource::Base

  self.site = http://localhost
  self.format = :json

end

A minha aplicação servidora roda na porta 3000, e a cliente na porta 3001.

O problema é que utilizando somente este código no meu resource, ele vai procurar pelo recurso no meu servidor utilizando o caminho:

http://localhost/remote_categories.json

O problema é que o meu servidor, obviamente ;) , não tem esta rota. Uma vez que o controller que ele possui tem nome categories, gerando portanto a rota:

http://localhost/categories.json

Entretanto eu não podia modificar o nome do meu resource para Category, pois eu já possuía um outro model com este nome na aplicação.

Então depois de perder alguns minutos encontrei a solução.

Basta definir o nome do elemento no resource. Neste caso em particular definir o element_name no objeto RemoteCategory:


self.element_name = 'category'

A configuração final do resource RemoteCategory fica então:


class RemoteCategory < ActiveResource::Base

  self.element_name = category
  self.site = http://localhost
  self.format = :json

end

Espero que seja útil para outras pessoas ;)


Fonte: http://www.leandronunes.net/2009/05/40/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.