質問: id end def hoge Hoge.where(id: @id) end def hoges Hoge.includes(:bar).where(id: @id) end end #コンストラクタなし class Hoge < ApplicationRecord def hoge(id) Hoge.where(id: id) end def hoges(id) Hoge.includes(:bar).where(id: id) end end ``` それともそもそもrailsのモデルクラスの場合はPOCOではないのでロジックをあまり書くべきではないのでしょうか?
回答: > > (rails5)モデルクラスにinitializeメソッドを付けると何か不具合が起こり得る可能性はあるのでしょうか? > > > この実装では、むしろ**不具合しか起きない**といっても過言ではありません。 > > よくよく思うとネットのリファレンスを見るにあたり、initializeメソッドをモデルクラスに記述しているものを見たことが無く > > 自分の実装方法が合っているのか気になります。 > > > 間違っています。このように、コンストラクタを上書きしてしまうと、 * 本来の引数で呼べない * `ActiveRecord::Base`のコンストラクタが呼ばれず、正常に初期化されない などの問題だらけとなってしまいます。