将activerecord上的访问器方法映射到activeresource上的属性



ActiveModel中指定的一些属性是非db属性,它们只是被定义为getter-setter。问题是这些属性值并没有反映在客户端的活动资源记录中。

    #server side code
    class Item < ActiveRecord::Base
       #not null name attribute defined on db 
    end
   class SpecialItem < ActiveRecord::Base
      #nullable item_name attribute defined on db
      #association many to one for item defined here
      #name accessor 
      def name
         if !item_name.nil?
           return item_name
         else
           return item.name
         end 
      end  
   end
   #client side code
   class SpecialItem < ActiveResource::Base
        schema do
      attribute 'name', 'string'
        end
   end

我在客户端上获得SepcialItem记录的属性名称的零值。基本上,我正在尝试将访问器方法名称映射到客户端的名称属性。

可能的解决方案是什么?

ActiveResource是一种与RESTful服务通信的方式,需要定义类变量site,即

   class SpecialItem < ActiveResource::Base
     self.site = 'http://example.com/'
     self.schema = { 'name' => :string}
   end

这将使用默认的Rails集合和元素约定。因此,对于对SpecialItem.fund(1)的调用,ActiveResource将路由到GET http://example.com/specialitems/1.json

相关内容

  • 没有找到相关文章

最新更新