Нет, в вызове store
невозможно указать значения по умолчанию.Макрос store
довольно прост:
def store(store_attribute, options = {})
serialize store_attribute, Hash
store_accessor(store_attribute, options[:accessors]) if options.has_key? :accessors
end
И все, что делает store_accessor
, это перебирает :accessors
и создает методы доступа и мутатора для каждого.Если вы попытаетесь использовать хэш с :accessors
, вы в конечном итоге добавите в свой store
некоторые вещи, которые вы не хотели.
Если вы хотите указать значения по умолчанию, вы можете использовать after_initialize
крючок:
class User < ActiveRecord::Base
store :settings, accessors: [ :color, :homepage ]
after_initialize :initialize_defaults, :if => :new_record?
private
def initialize_defaults
self.color = 'blue' unless(color_changed?)
self.homepage = 'rubyonrails.org' unless(homepage_changed?)
end
end