2012-01-03 66 views
0

我需要/想提出一個自定義的方法與的ActiveResource的ActiveResource自定義方法:ID規範

myresource.put(:go_crazy, {:go => "go", :crazy => "crazy"}) 

都到服務器上,其中資源是

/myresource/:id(pretend is the integer 1)/go_crazy?go=go%crazy=crazy 

只是,我需要指定:id是別的東西,例如'myresource.crazy_key'

我已經想出了另一種方法來解決這個問題,但我似乎無法得到我需要做的事情來指定id作爲別的東西,如果我能做到的話這一切。

回答

2

在你的「資源」的模式,覆蓋to_param方法

def to_param 
    crazy_key.to_s 
end 
+0

它已經在那裏以前,我用的作爲與AR的ID鍵,但不是to_s – blueblank 2012-01-03 20:35:21

1

我假設你想使用的東西,而不是其他:ID的URL。然後,你必須定義的屬性,它會在你的活躍的資源類作爲主鍵:

class FooBar < ActiveResource::Base 
    self.site="http://host/root/" 
    self.primary_key = :name 
end 

然後

FooBar.find('XYZ').get(:subfoo) 

會要求

http://host/root/foo_bar/XYZ/subfoo