Rails:ActiveResource - 我可以明确设置ID吗?

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代码可能会使它工作,但我不愿意这样做.

这样做有正确的方法吗?或者我正在努力做的只是坏事,我不应该这样做?

Sar*_*Mei 2

您正在违背 ActiveResource 的意图。ActiveResource 提供了 REST Web 服务的接口,按照惯例,它会在您创建时返回分配的 ID。

也就是说,如果您控制正在使用的资源,并且已将其行为修改为在保存新记录时获取 ID,则可以修改 ActiveResource::Base 以符合要求。对于 Rails 中的人们来说,对基类进行添加和更改确实并不罕见。您只需将补丁放入 lib 中并将其包含在启动内容中的某个位置即可。

我认为这不一定是一个好主意,但这是可能的。:)