Я пытаюсь расширить несколько моих классов моделей до класса «Актив».Каждый из четырех типов активов сможет генерировать слаг из set_callback(:save, :before)
Следовательно, вместо того, чтобы писать четыре одинаковых метода, я бы хотел, чтобы они расширили класс Asset, у которого был бы set_callback (а такжедругие методы).
Сначала я попытался просто расширить их класс Asset, но столкнулся с проблемами, когда при сохранении одного из активов в базу данных (mongo) коллекция, в которую они вставляли, называлась скорее Assetчем их собственное имя.
После того, как я погуглил, люди, кажется, рекомендуют вместо этого использовать модули.Итак, я попробовал это:
module Asset
field :slug, :type => String
set_callback(:save, :before) do |document|
# make document.slug = to whatever
end
end
class Video
include Mongoid::Document
include Asset
field :video_name, :type => String
field :description, :type => String
field :some_more_fields, :type => String
end
Но я получаю некоторые ошибки, когда я включаю Актив:
'undefined method `field' for Asset:Module'
Примечание: я использую Mongoid