Spec-Zone.ru › Ruby on Rails 7.0

модуль ActiveRecord::AttributeMethods::Dirty

Включённые модули:
ActiveModel::Dirty

Публичные методы экземпляра

attribute_before_last_save(attr_name) Показать исходный код
# 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").

attribute_change_to_be_saved(attr_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").

Если атрибут изменится, результат будет массивом, содержащим исходное значение и новое значение, которое будет сохранено.

attribute_in_database(attr_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").

attributes_in_database() Показать исходный код
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 181
def attributes_in_database
  mutations_from_database.changed_values
end

Возвращает хеш атрибутов, которые изменятся при следующем сохранении записи.

Ключами хеша являются имена атрибутов, а значениями — исходные значения атрибутов в базе данных (в отличие от значений в памяти, которые будут сохранены).

changed_attribute_names_to_save() Показать исходный код
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 171
def changed_attribute_names_to_save
  mutations_from_database.changed_attribute_names
end

Возвращает массив имён атрибутов, которые изменятся при следующем сохранении записи.

changes_to_save() Показать исходный код
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 165
def changes_to_save
  mutations_from_database.changes
end

Возвращает хеш, содержащий все изменения, которые будут сохранены при следующем сохранении.

has_changes_to_save?() Показать исходный код
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 159
def has_changes_to_save?
  mutations_from_database.any_changes?
end

Будет ли следующий вызов save иметь какие-либо изменения для сохранения?

reload(*) Показать исходный код
# 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 запись и очищает изменённые атрибуты.

Вызывается метод суперкласса
saved_change_to_attribute(attr_name) Показать исходный код
# 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").

saved_change_to_attribute?(attr_name, **options) Показать исходный код
# 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, если значение не было изменено на заданное значение

saved_changes() Показать исходный код
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 110
def saved_changes
  mutations_before_last_save.changes
end

Возвращает хеш, содержащий все изменения, которые были только что сохранены.

saved_changes?() Показать исходный код
# File activerecord/lib/active_record/attribute_methods/dirty.rb, line 105
def saved_changes?
  mutations_before_last_save.any_changes?
end

При последнем вызове save были какие-либо изменения для изменения?

will_save_change_to_attribute?(attr_name, **options) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API