Как может значения по умолчанию в Моделях Продолжения быть установленным?

Вы могли выполнить вызов Ajax (вероятно, пользующийся библиотекой, такой как использование Prototype.js или JQuery). Ajax может обработать обе опции GET и POST.

6
задан Bill the Lizard 27 December 2010 в 14:56
поделиться

2 ответа

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

Дополнительные параметры см. в колонке продолжения.

4
ответ дан 9 December 2019 в 20:47
поделиться

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 .

7
ответ дан 9 December 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: