Существует ли способ постараться не автоматически обновлять поля метки времени направляющих?

в соответствии с документами discord.js ( https://discord.js.org/#/docs/main/stable/class/DMChannel?scrollTo=send ) (проверен канал текстового канала send () & выглядит так же)

вот как вы вызываете эту функцию:

// Send a local file
channel.send({
  files: [{
    attachment: 'entire/path/to/file.jpg',
    name: 'file.jpg'
  }]
})
  .then(console.log)
  .catch(console.error);

похоже, что вам нужно указать путь для вложения и имя для него (ну, имя не является обязательным)

не уверен в этом, но если channel.send действительно поддерживает синтаксис, который вы использовали, то я бы посмотрел на этот «весь / путь / к / файл.jpg» что настоятельно рекомендует не использовать относительные пути .

66
задан Vadim Kotov 25 October 2017 в 14:14
поделиться

4 ответа

Сделайте это при миграции или в задаче с граблями (или в новых начальных числах базы данных , если вы находитесь на граничных направляющих):

ActiveRecord::Base.record_timestamps = false
begin
  run_the_code_that_imports_the_data
ensure
  ActiveRecord::Base.record_timestamps = true  # don't forget to enable it again!
end

Вы можете безопасно установить created_at и updated_at вручную, Rails не будет жаловаться.

Примечание: Это также работает с отдельными моделями, например User.record_timestamps = false

74
ответ дан 24 November 2019 в 14:48
поделиться

Я опаздываю стороне, но это - то, как мы пропускаем обновление updated_at в моем магазине:

# config/initializers/no_timestamping.rb
module ActiveRecord
  class Base

    def update_record_without_timestamping
      class << self
        def record_timestamps; false; end
      end

      save!

      class << self
        remove_method :record_timestamps
      end
    end

  end
end

Использование:

post.something = 'whatever'
post.update_record_without_timestamping
0
ответ дан 24 November 2019 в 14:48
поделиться

You can set the following inside your migration:

ActiveRecord::Base.record_timestamps = false

Or altenatively use update_all:

update_all(updates, conditions = nil, options = {})

Updates all records with details given if they match a set of conditions supplied, limits and order can also be supplied. This method constructs a single SQL UPDATE statement and sends it straight to the database. It does not instantiate the involved models и он не запускает Active Record Обратные вызовы.

30
ответ дан 24 November 2019 в 14:48
поделиться

Поскольку это однократный импорт, вы можете сделать следующее:

  1. Создать модель, используя поля legacy_created_at и legacy_updated_at .
  2. Загрузить устаревшие данные. При необходимости сопоставьте поля модели. Вы можете использовать #save и, как правило, не беспокоиться об использовании update_all и т.п., а также при желании можете использовать обратные вызовы.
  3. Создайте миграцию, чтобы переименовать столбцы в created_at и updated_at .
3
ответ дан 24 November 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: