модуль ActiveRecord::AttributeMethods::Dirty
Публичные методы экземпляра
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 100 def attribute_before_last_save(attr_name) mutations_before_last_save.original_value(attr_name.to_s) end
Возвращает исходное значение атрибута до последнего сохранения.
Этот метод полезен в обратных вызовах после сохранения для получения исходного значения атрибута до сохранения, которое вызвало выполнение обратных вызовов. Его можно вызвать как name_before_last_save вместо attribute_before_last_save("name").
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 142 def attribute_change_to_be_saved(attr_name) mutations_from_database.change_to_attribute(attr_name.to_s) end
Возвращает изменение атрибута, которое будет сохранено при следующем сохранении.
Этот метод полезен при валидации и обратных вызовах до сохранения, чтобы увидеть изменение атрибута, которое произойдёт при сохранении записи. Его можно вызвать как name_change_to_be_saved вместо attribute_change_to_be_saved("name").
Если атрибут изменится, результат будет массивом, содержащим исходное значение и новое значение, которое будет сохранено.
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 154 def attribute_in_database(attr_name) mutations_from_database.original_value(attr_name.to_s) end
Возвращает значение атрибута в базе данных, в отличие от значения в памяти, которое будет сохранено в следующий раз, когда запись будет сохранена.
Этот метод полезен при валидации и обратных вызовах до сохранения, чтобы увидеть исходное значение атрибута до любых изменений, которые будут сохранены. Его можно вызвать как name_in_database вместо attribute_in_database("name").
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 181 def attributes_in_database mutations_from_database.changed_values end
Возвращает хеш атрибутов, которые изменятся при следующем сохранении записи.
Ключами хеша являются имена атрибутов, а значениями — исходные значения атрибутов в базе данных (в отличие от значений в памяти, которые будут сохранены).
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 171 def changed_attribute_names_to_save mutations_from_database.changed_attribute_names end
Возвращает массив имён атрибутов, которые изменятся при следующем сохранении записи.
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 165 def changes_to_save mutations_from_database.changes end
Возвращает хеш, содержащий все изменения, которые будут сохранены при следующем сохранении.
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 159 def has_changes_to_save? mutations_from_database.any_changes? end
Будет ли следующий вызов save иметь какие-либо изменения для сохранения?
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 57
def reload(*)
super.tap do
@mutations_before_last_save = nil
@mutations_from_database = nil
end
end reload запись и очищает изменённые атрибуты.
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 90 def saved_change_to_attribute(attr_name) mutations_before_last_save.change_to_attribute(attr_name.to_s) end
Возвращает изменение атрибута во время последнего сохранения. Если атрибут был изменён, результат будет массивом, содержащим исходное значение и сохранённое значение.
Этот метод полезен в обратных вызовах после сохранения, чтобы увидеть изменение атрибута во время сохранения, которое вызвало выполнение обратных вызовов. Его можно вызвать как saved_change_to_name вместо saved_change_to_attribute("name").
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 78 def saved_change_to_attribute?(attr_name, **options) mutations_before_last_save.changed?(attr_name.to_s, **options) end
Этот атрибут изменился при последнем сохранении?
Этот метод полезен в обратных вызовах после сохранения, чтобы определить, был ли атрибут изменён во время сохранения, которое вызвало выполнение обратных вызовов. Его можно вызвать как saved_change_to_name? вместо saved_change_to_attribute?("name").
Параметры
from Если передан, этот метод вернёт false, если исходное значение не равно указанному параметру
to Если передан, этот метод вернёт false, если значение не было изменено на заданное значение
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 110 def saved_changes mutations_before_last_save.changes end
Возвращает хеш, содержащий все изменения, которые были только что сохранены.
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 105 def saved_changes? mutations_before_last_save.any_changes? end
При последнем вызове save были какие-либо изменения для изменения?
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 128 def will_save_change_to_attribute?(attr_name, **options) mutations_from_database.changed?(attr_name.to_s, **options) end
Этот атрибут изменится при следующем сохранении?
Этот метод полезен при валидации и обратных вызовах до сохранения для определения, изменит ли следующий вызов save определённый атрибут. Его можно вызвать как will_save_change_to_name? вместо will_save_change_to_attribute?("name").
Параметры
from Если передан, этот метод вернёт false, если исходное значение не равно указанному параметру.
to Если передан, этот метод вернёт false, если значение будет изменено на заданное значение.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.