2015-05-29 65 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)'' –

相关问题