Как передать аргументы в модуль в ловушке before_save? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть модуль:

# frozen_string_literal: true

# will strip whitespace of certain attributes
module StripWhitespace
  extend ActiveSupport::Concern

  included do
    before_save :strip_whitespace
  end

  # Strips white space from these user attributes
  def strip_whitespace(attrs)
    attrs.each do |attr|
      self[attr] = send(attr)&.strip
    end
  end
end

, и я в настоящее время включаю его в модель:

class User < ApplicationRecord

include StripWhitespace

end

Однако я хочу иметь возможность передать аргумент в before_save крючок. Примерно так:

# user.rb

COLS_TO_STRIP = %i[first_name last_name location phone city]

before_save strip_whitespace(COLS_TO_STRIP)

В любом случае это не работает. Будучи новичком в ruby, я не уверен, правильно ли я это делаю. Должен ли я делать это в модели? Или модуль? Правильно ли настроен мой модуль?

1 Ответ

0 голосов
/ 27 февраля 2020

Параметры могут быть переданы через перехваты обратного вызова, как показано ниже -

before_save -> { strip_whitespace(COLS_TO_STRIP) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...