从活动资源调用活动记录方法(Ruby / Rails)

时间:2011-07-13 15:07:29

标签: ruby-on-rails ruby rails-activerecord activeresource

为广泛的标题问题道歉。

基本上这是我之前关于defs以及如何在实例化方法中调用它们的问题。

基本上我现在拥有它的方式:

我在客户端设置了一个活动资源,并使用.save发布 然后,它通过我在服务器上的控制器并存储同一类的活动记录。

所以MyResource - >保存 - > MyRecord

MyRecord存储有包含简单字符串的状态列。 事情是MyRecord类有一个名为

的def
  def get_status
    puts status
  end #Amazing method, I know

在我的脑海里如果我想在MyRecord上执行get_status,我所要做的就是这个。

(Please note this is client side)
@test = MyRecord.find(1)
@test.get_status

可悲的是,情况并非如此,因为@test成为一个活跃的资源,并且无法调用它没有的方法。 (注意:我的类实际上并不称为MyRecord和MyResource,它们只是标题,为了简单起见,因为我更倾向于理解解决方案而不是有人为我解决它。)

有没有人愿意指出我正确的方向来解释我如何从客户端调用活动记录方法。我是否完全采用了错误的方式并且应该在控制器而不是模型中进行处理?


旁注:.save还有其他选择吗?由于我无法理解的原因,我的老板不喜欢它。 (注意:他是领导者,我是实习生,因此我不会争论或提出看似挑战的问题)

2 个答案:

答案 0 :(得分:0)

老实说,ActiveResource需要一点工作......我必须在我工作的地方实现这个功能,并最终使用基本的http在客户端和服务器之间共享代码来滚动我自己的半RPC lib。

实际上,ruby-rpcDRb之类的东西可能是更好的选择。

答案 1 :(得分:0)

您可以在发送到您的AResource模型的数据中包含ARecord方法的结果:

class MyRecord < ActiveRecord::Base
  ...
  def to_xml(options={})
    super(options.merge(:methods => [ :your_method_name_here ]))
  end
  ...
end

您需要在AResource模型中重新创建要在客户端上使用的任何其他方法。 (我不知道puts如何属于ARecord模型,但做任何漂浮在船上的事情。)