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