4

我正在开发一个 Rails 应用程序,它将通过 Rails 的 ActiveResource 功能用作其他 Rails 应用程序的身份验证系统。

身份验证应用程序有一个名为 的 ActiveRecord 模型User。客户端应用程序有一个名为 的 ActiveResource 模型User。我知道在客户端应用程序中我可以做类似的事情user.save,它将使用 XML over HTTP 执行 PUT 操作。

但是如果我想放入我的客户端应用程序的User模型has_many :contacts或类似的东西(contacts作为客户端应用程序中的 ActiveRecord 模型)怎么办?然后我想做一些事情,比如获取所有Contact属于 some 的 s User

那可能吗?

(我注意到有人问了类似的问题,但没有多少回应。)

4

2 回答 2

5

简短的回答:没有。has_manybelongs_to、中涉及的类has_and_belongs_to_many存在于 ActiveRecord 中并构建 SQL 查询以使关联起作用。

也就是说,你可以让它看起来有一个关联,你只需要编写自己的方法。在您链接到的那个问题上,哪个是投票赞成的答案。

因此,在您的 Contact 模型中添加一个列,该列是user_id您需要传递给User.findActiveResource 模型的任何键,您可以像这样作为关联合同的一部分:

class User < ActiveResource::Base
  # boilerplate ActiveResource url stuff

  def contacts
    Contact.find(:all, :conditions => { :user_id => self.id })
  end
end

class Contact < ActiveRecord::Model
  def user
    User.find_by_user_id(self.user_id)
  end
end

您可以免费获得更多内容has_many,但这就是要点。

于 2009-02-01T17:56:10.597 回答
3

这个问题很古老,但我最近遇到了这个问题:

http://yetimedia.tumblr.com/post/35233051627/activeresource-is-dead-long-live-activeresource

从帖子:

对关联的基本支持:has_many、has_one、belongs_to 现在可以在 ActiveResource 模型中使用。

尽管 ActiveResource 已从 Rails 4.0 中删除,但帖子中还提到了一些其他改进,可能需要再次查看 ActiveResource。

于 2013-02-25T10:48:26.063 回答