Ответ 1
То, что вы хотите сделать, это определить новый метод создания столбцов, который предоставляет параметры для создания вашего настраиваемого типа. Это по существу делается путем добавления метода, который ведет себя как t.integer ...
в миграциях. Трюк выясняет, где добавить этот код.
Некоторые, где в вашем каталоге инициализаторы помещают этот фрагмент кода:
module ActiveRecord::ConnectionAdapters
class TableDefinition
def currency (*args)
options = args.extract_options!
column_names = args
options[:precision] ||= 8
options[:scale] ||= 2
column_names.each { |name| column(name, 'decimal', options) }
end
end
end
Теперь вы можете использовать метод валюты, чтобы определить столбец валюты в любое время, когда оно вам понадобится.
Пример:
def self.up
create_table :products do |t|
t.currency :cost
t.timestamps
end
end
Чтобы добавить столбец валюты в существующую таблицу:
def self.up
change_table :products do |t|
t.currency :sell_price
end
end
Предостережение: У меня нет времени проверять его, поэтому никаких гарантий нет. Если он не работает, он должен по крайней мере поставить вас на правильный путь.