В некоторых случаях find_or_initialize_by_
не будет полезен, и нужно пропустить проверки с find_or_create_by
.
Для этого вы можете использовать ниже альтернативный поток и метод ROR:
Обновите вашу модель так:
class Post < ActiveRecord::Base
attr_accessor :skip_validation
belongs_to :user
validates_presence_of :title, unless: :skip_validation
end
Теперь вы можете использовать его так:
Post.where(user_id: self.id).first_or_create!(skip_validation: true)
Я использовал first_or_create
вместо find_or_create_by
здесь. Вы можете передать больше имен столбцов и значений, и ваша проверка не будет работать с этим.
Вы можете продолжить без каких-либо изменений для конца сильных параметров, и нет необходимости разрешать эту 'skip_validation', чтобы она работала с проверками при добавлении записей.
Используя это, вы можете использовать его с проверками и без них, передавая параметр.