У меня была та же проблема. Я нашел самый простой способ использовать enableWriteAheadLogging () в объекте базы данных.
databaseObject.enableWriteAheadLogging()
Вы могли использовать двойной оператор **
нащельной рейки в сочетании с [1 115] логичный или (двойные каналы) ||
внутренняя часть initialize
метод для достижения того же эффекта.
class Person
def initialize(**options)
@name = options[:name] || options[:first_name] << ' ' << options[:last_name]
end
end
james = Person.new(name: 'James')
#=> #<Person @name="James">
jill_masterson = Person.new(first_name: 'Jill', last_name: 'Masterson')
#=> #<Person @name="Jill Masterson">
Однако, если новое Person
будет создано без first_name
, то добавление <<
операция перестанет работать с NoMethodError: undefined method '<<' for nil:NilClass
. Вот пересмотренное initialize
метод для обработки этого случая (использующий strip
для удаления пробел, если любой опция исключена).
class Person
def initialize(**options)
@name = options[:name] || [ options[:first_name] , options[:last_name] ].join(' ').strip
end
end
goldfinger = Person.new(last_name: 'Goldfinger')
#=> #<Person @name="Goldfinger">
oddjob = Person.new(first_name: 'Oddjob')
#=> #<Person @name="Oddjob">
На самом деле, этот подход дескрипторы, звоня Person.new
без аргументов или с неожиданным ключом для возврата нового экземпляра с [1 113] набор к пустой строке:
nameless = Person.new
#=> <#Person @name="">
middle_malcom = Person.new(middle_name: 'Malcom')
#=> <#Person @name="">