我一直在努力实现自己的 ORM。我想知道 rails path helper 如何从对象中提取 ID。例如,我将如何为我的 ORM 进行这项工作?
@contact = Contact.first
contact_path(@contact)
任何帮助将不胜感激!
更新:
我的对象确实有一个 ID 属性并对其做出响应。但是路径助手返回一个错误。
我一直在努力实现自己的 ORM。我想知道 rails path helper 如何从对象中提取 ID。例如,我将如何为我的 ORM 进行这项工作?
@contact = Contact.first
contact_path(@contact)
任何帮助将不胜感激!
更新:
我的对象确实有一个 ID 属性并对其做出响应。但是路径助手返回一个错误。
简而言之,您希望符合 activemodel。这将使 url 助手、form_for(@contact) 等工作。
您还可以(可选地)使用一堆模块来处理诸如验证、脏属性等事情。
您必须实现的方法很少。还有一个
ActiveModel::Lint模块可以测试您对这些原语的实现是否有效,并且还可以用作文档。特别是您需要实现to_param
和persisted?
. 我认为一些命名的东西只有在你做类似的事情时才会被使用link_to 'foo', @contact
该方法检查您是否已将对象或整数传递给它。如果它是一个对象并且该对象有一个id
方法 ( respond_to?(:id)
),它使用它的 ID。非常简单。