при использовании after_create (ArgumentError: необходимо указать хотя бы одну проверку) - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь создать запись в ClientUserEmailPreference, когда запись электронной почты создается заново. Я попытался after_create создать новую запись при создании новой записи электронной почты. Но, когда я пытаюсь создать новую запись электронной почты, она показывает ArgumentError: You need to supply at least one validation Ниже приведена моя модель электронной почты.

class Email < ApplicationRecord
    belongs_to :email_type
    belongs_to :email_preference_section
    has_many :client_user_email_preferences
    validates :name, allow_blank: false, presence: true
    validates :email_type_id, allow_blank: false, presence: true
    validates :email_preference_section_id, allow_blank: true
    validates :position, allow_blank: false, presence: true

    after_create :set_default_to_client_users

    def set_default_to_client_users
            new_preference = ClientUserEmailPreference.new
            new_preference.client_user_id = that_client_user.id
            new_preference.email_id = self.id
            new_preference.enabled = true
            if self.email_type_id != 1
                new_preference.frequency = "every week"
                new_preference.day_of_the_week = 1
            end
            new_preference.save
    end
end

Я не знаю, как эффективно создать строку в ClientUserEmailPreference при получении новой электронной почты создано

1 Ответ

1 голос
/ 09 февраля 2020

Ошибка, вероятно, в этой строке

validates :email_preference_section, allow_blank: true

Поскольку это ассоциация, если вы хотите, чтобы она была необязательной, удалите приведенную выше проверку и затем сделайте это вместо

belongs_to :email_preference_section, optional: true

Также, Вам также не нужна эта строка, так как она включена по умолчанию для внешних ключей

validates :email_type_id, allow_blank: false, presence: true

Попробуйте!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...