为这个宽泛的标题问题道歉。
基本上,这是我之前关于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还有其他选择吗?我老板不喜欢它的原因我不明白。(注意:他是领导,我是实习生,所以我不会争论或问那些看起来像是挑战的问题)
老实说,ActiveResource需要一点工作…我必须在我工作的地方实现这个功能,并最终使用基本的http在客户端和服务器之间共享代码来开发自己的半RPC库。
真的,虽然像ruby-rpc或DRb可能是一个更好的选择。
您可以在发送到AResource模型的数据中包含ARecord方法的结果:
class MyRecord < ActiveRecord::Base
...
def to_xml(options={})
super(options.merge(:methods => [ :your_method_name_here ]))
end
...
end
您需要在AResource模型中重新创建您想要在客户端上使用的任何其他方法。(我不知道如何puts
属于一个ARecord模型,但做任何浮动你的船。)