私は独自の ORM の実装に取り組んできました。そして、Rails パス ヘルパーがどのようにオブジェクトから ID を抽出するのか疑問に思っていました。たとえば、ORM でこれを機能させるにはどうすればよいでしょうか。
@contact = Contact.first
contact_path(@contact)
どんな助けでも大歓迎です!
アップデート:
私のオブジェクトには ID 属性があり、それに応答します。それでも、パス ヘルパーはエラーを返します。
私は独自の ORM の実装に取り組んできました。そして、Rails パス ヘルパーがどのようにオブジェクトから ID を抽出するのか疑問に思っていました。たとえば、ORM でこれを機能させるにはどうすればよいでしょうか。
@contact = Contact.first
contact_path(@contact)
どんな助けでも大歓迎です!
アップデート:
私のオブジェクトには ID 属性があり、それに応答します。それでも、パス ヘルパーはエラーを返します。
一言で言えば、アクティブモデルに準拠したいということです。これにより、url ヘルパー、form_for(@contact) などが機能します。
また、(オプションで) バリデーションやダーティ属性などを扱う一連のモジュールを使用することもできます。
実装する必要があるメソッドはほんの一握りです。これらのプリミティブの実装が有効であることをテストする
ActiveModel::Lintモジュールもあり、ドキュメントとしても機能します。特に、 と を実装する必要がありto_param
ますpersisted?
。ネーミングのいくつかは、次のようなことをした場合にのみ使用されると思いますlink_to 'foo', @contact
このメソッドは、オブジェクトまたは整数を渡したかどうかを確認します。それがオブジェクトで、そのオブジェクトにid
メソッド ( respond_to?(:id)
) がある場合、その ID を使用します。かなりシンプル。