Превращайте строки в списки и работайте с ними. В конце снова включите списки в строки, используя join()
a = 'abc'
a = list(a)
print(a)
>>>['a', 'b', 'c']
a = ''.join(a)
print(a)
>>>'abc'
От ввода по абсолютному адресу вокруг в источнике (я в настоящее время нахожусь на направляющих 1.2.6), обратные вызовы относительно просты.
оказывается, что before_validation_on_create
, before_save
и т.д. методы, если не вызванный с какими-либо аргументами, возвратят массив, который содержит все текущие обратные вызовы, присвоенные тому 'сайту обратного вызова'
Для очистки before_save, можно просто сделать
before_save.clear
, и это, кажется, работает
Мне нравится использовать следующий шаблон:
class Parent < ActiveRecord::Base
validate_uniqueness_of :column_name, :if => :validate_uniqueness_of_column_name?
def validate_uniqueness_of_column_name?
true
end
end
class Child < Parent
def validate_uniqueness_of_column_name?
false
end
end
Было бы хорошо, если бы направляющие предоставили skip_validation метод для обхождения этого, но этот шаблон работы и обрабатывает сложные взаимодействия хорошо.
Снова вводя по абсолютному адресу вокруг в источнике, кажется, что проверки могут быть выполнены или на каждом сохранении или обновляют/создают только. Это отображается на
:validate
=>, все сохраняет
:validate_on_create
=> создания только
:validate_on_update
=> обновления только
Для очистки их, можно использовать write_inheritable_attribute
, как это:
write_inheritable_attribute :validate, nil