そのため、次のようなコードを書いていることがよくあります。
song.rb:
:before_save :cache_sortable_name
private
def cache_sortable_name
return unless name_changed?
self.sortable_name = name.sub(/^(the|a|an)\s+/i, '')
end
つまり、利便性のために非正規化されたデータを保持するsortable_name
データベース列があり、モデルの名前が変更されるたびにデータを入力したいと考えています。
このロジックをこのような構造にカプセル化できるようにしたいと思います
:cache_in_database :sortable_name do
name.sub(/^(the|a|an)\s+/i, '')
end
か何か。これは存在しますか?