2015-05-29 29 views
1

有沒有一種標準的方法來從給定的URL獲取Ruby on Rails中的ActiveRecord項目? 我在外部RDF數據庫中有一些數據,我可以查詢它以獲取Ruby on Rails代碼中項目的URL。然後我想在Ruby on Rails程序中獲得屬於這些URL的ActiveRecord對象。 一個從數據庫中查詢結果的例子:有沒有一種標準的方法來從給定的URL獲取Ruby on Rails中的ActiveRecord項目?

"http://localhost:3000/data_files/5", 
"http://localhost:3000/assays/3", 
"http://localhost:3000/assays/5" 

我知道我可以解析這一點,並呼籲:

DataFile.find(5) 
Assays.find(3) 
Assays.find(5) 

,但我認爲有可能是代碼的標準位,這是否。 正如你所看到的,我可以有多種類型的對象進行搜索,所以我需要得到正確的對象類型以及使用ID號。

+0

最好的解決方案是用戶ActiveResource :: Base類 –

+0

http://api.rubyonrails.org/v2.3.8/classes/ActiveResource/Base.html –

+0

ActiveResource是Rails的更長一部分。您鏈接的版本是五年前的版本。 –

回答

1

在你的基本例子這樣的事情應該工作。

def get_object_from_url url_string 
    class_string = url_string.split('/')[-2] 
    object_id = url_string.split('/')[-1] 

    class_string.camelize.constantize.find_by_id(object_id) 
end 

將需要更復雜的邏輯取決於url的。

+1

謝謝你的有用答案 - 我不知道如何做最後一行代碼。我本來期望有一個像ActionRecord.find(url)這樣的方法,但是看起來好像沒有。 –

+0

我還需要'singularise' class_string,像這樣:'class_string.singularize.camelize.constantize.find_by_id(object_id)'' –

相關問題