Dan*_*man 6 rest ruby-on-rails activeresource
我在Rails中使用ActiveResource来管理REST上单独数据库中的实体.
我一直在尝试显式管理远程资源的ID,因为在当前情况下,最简单的方法是重新使用本地资源的ID,而不是维护不同的字段.
不幸的是我一直没能得到这个工作作为代码new?
中ActiveResource::Base
是
def new?
id.nil?
end
Run Code Online (Sandbox Code Playgroud)
并且save
是
def save
new? ? create : update
end
Run Code Online (Sandbox Code Playgroud)
因此,根据定义,不可能设置资源的ID并将其保存为新资源.
create
并且update
是受保护的方法,所以如果我攻击ActiveResource :: Base代码可能会使它工作,但我不愿意这样做.
这样做有正确的方法吗?或者我正在努力做的只是坏事,我不应该这样做?
您正在违背 ActiveResource 的意图。ActiveResource 提供了 REST Web 服务的接口,按照惯例,它会在您创建时返回分配的 ID。
也就是说,如果您控制正在使用的资源,并且已将其行为修改为在保存新记录时获取 ID,则可以修改 ActiveResource::Base 以符合要求。对于 Rails 中的人们来说,对基类进行添加和更改确实并不罕见。您只需将补丁放入 lib 中并将其包含在启动内容中的某个位置即可。
我认为这不一定是一个好主意,但这是可能的。:)
归档时间: |
|
查看次数: |
6785 次 |
最近记录: |