これは、ベスト プラクティスに関する単なる質問です。
パラメーターを 1 つ取るメソッドがあるとします。このパラメーターは、オブジェクトの ID です。理想的には、オブジェクトの ID を直接渡すか、オブジェクト自体だけを渡すことができるようにしたいと考えています。
これを行う最もエレガントな方法は何ですか?
私は次のことを思いつきました:
def method_name object
object_id = object.to_param.to_i
### do whatever needs to be done with that object_id
end
そのため、パラメーターが既に id である場合、ほとんど同じままです。オブジェクトの場合は、その ID を取得します。
これは機能しますが、これはもっと良いかもしれないと感じています。また、to_param は文字列を返しますが、場合によっては「実際の」文字列 (つまり、「2」ではなく「文字列」) を返す可能性があるため、to_i を呼び出すと 0 が返されます。これは、たとえば、クラスにわかりやすい id gemを使用する場合に発生する可能性があります。
アクティブ レコードは同じ機能を提供します。次のように言っても問題ありません。
Table.where(user_id: User.first.id) # pass in id
また
Table.where(user_id: User.first) # pass in object and infer id
どうやってやっているの?この効果を達成するための最良のアプローチは何ですか?