【问题标题】:Is there a standard way to get an ActiveRecord item within Ruby on Rails from a given URL?是否有一种标准方法可以从给定的 URL 在 Ruby on Rails 中获取 ActiveRecord 项目?
【发布时间】:2015-05-29 23:04:24
【问题描述】:

在 Ruby on Rails 中,有没有一种标准方法可以从给定的 URL 获取 ActiveRecord 项? 我在外部 RDF 数据库中有一些数据,我可以查询这些数据以获取 Ruby on Rails 代码中项目的 URL。然后,我想在我的 Ruby on Rails 程序中获取属于这些 URL 的 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 号。

【问题讨论】:

标签: ruby-on-rails ruby activerecord


【解决方案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 需要更复杂的逻辑。

【讨论】:

  • 感谢您的有用回答 - 我不知道如何执行最后一行代码。我原以为会有像ActionRecord.find(url) 这样的方法,但看起来没有。
  • 我还需要singularise class_string,像这样:class_string.singularize.camelize.constantize.find_by_id(object_id)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多