Будет ли изменяться настройка атрибутов модели Rails с одинаковым значением?вернуть истину? - PullRequest
0 голосов
/ 30 ноября 2018

Я хочу сделать мою задачу db:seed более динамичной, позволяя создавать или обновлять определенные записи в моем приложении (или вообще ничего) на основе значений в db/seeds.rb и текущего состояниябаза данныхЯ также хочу упростить функции, которые выполняют эту логику.

Я бы хотел избежать этого:

def create_or_update_config(key, value)

  ...

  if config_entry.value != value
    config_entry.value
  end

  if config_entry.changed?
    config_entry.save
  end

  ...

end

И вместо этого есть что-то упрощенное:

def create_or_update_config(key, value)

  ...

  config_entry.value = value

  if config_entry.changed?
    config_entry.save
  end

  ...

end

Достаточно ли умен ActiveRecord, чтобы знать, изменились ли значения атрибутов дажеесли они были установлены (с тем же значением)?

1 Ответ

0 голосов
/ 30 ноября 2018

Да.Метод changed? ActiveRecord вернет true, только если с момента последнего сохранения произошли мутации.Из примера использования консоли моего собственного приложения (Rails 5.1.6):

irb(main):013:0> config.value
=> "http://localhost:3100"
irb(main):014:0> config.value = "http://localhost:3100"
=> "http://localhost:3100"
irb(main):015:0> config.changed?
=> false
irb(main):016:0> config.value = "anything else"
=> "anything else"
irb(main):017:0> config.changed?
=> true
...