Вы могли выполнить вызов Ajax (вероятно, пользующийся библиотекой, такой как использование Prototype.js или JQuery). Ajax может обработать обе опции GET и POST.
DB.create_table :items do
primary_key :id
String :name,:default => 'Thing'
end
должен сделать трюк
из сиквела Sequel :: Database source. Блок create_table оценивается внутри Schema :: Generator
def create_table(name, options={}, &block)
options = {:generator=>options} if options.is_a?(Schema::Generator)
generator = options[:generator] || Schema::Generator.new(self, &block)
create_table_from_generator(name, generator, options)
create_table_indexes_from_generator(name, generator, options)
end
внутри класса Schema :: Generator method_missing обрабатывает String, text, boolean, number обрабатываются методом столбца
def method_missing(type, name = nil, opts = {})
name ? column(name, type, opts) : super
end
Дополнительные параметры см. в колонке продолжения.
Subba's Ответ - рекомендуемый способ сделать это в продолжении. Он помещает значение по умолчанию в базу данных.
Если вы хотите, чтобы значения по умолчанию были в модели, а не в базе данных, я рекомендую использовать для их выполнения хук before_create
или after_initialize
:
class Item < Sequel::Model
def before_create # or after_initialize
super
self.name ||= 'Thing'
end
end
Разница между after_initialize
и before_create
заключается в том, когда они вызываются. before_create
рекомендуется, поскольку он не установит значение по умолчанию, пока не будет вызван метод базы данных INSERT
. Однако, если вы хотите:
Item.new.name == 'Thing'
, вы должны использовать after_initialize
.