ActiveRecordで作成されたpostgres配列型属性に対して<<
演算子をオーバーライドすることはできますか?Postgres配列型シフト演算子
列定義:
t.time "hours", default: [], array: true
これは動作するようです:
def hours=(arr)
super(arr.map {|h| # do some stuff with each element})
end
これはしていません:
def hours<<(val)
super(# do some stuff before pushing)
end
注これはhas_many
どこで作成された団体でないことオーバーロードメソッドにブロックを追加できます。
hours属性を使用するたびにモジュールを含めるのにパフォーマンス/メモリコストはありますか? – iftheshoefritz
はい、それは約15倍遅くなります。しかし、あなたがこのメソッドを多くの時間呼び出すまで無視してください。また、 'include'が動作しなかったことに気づくでしょう。あなたが実際にしたいことは、 'extend'を使うことです。私は私の答えを編集し、ベンチマークを追加しました –