0

Я хочу отображать сообщение без атрибута в форме. У меня есть два класса, issue_attachment и проблема.Отображать только сообщение без атрибута в модели с приложением другой модели

Нет модели issue_attachment, у меня есть метод, который проверяет, заканчивается ли файл exe, .com .., среди прочего, если да, он возвращает сообщение об ошибке.

Проблема в том, что я не хочу, чтобы сообщение об ошибке было завершено. Но я не могу этого сделать. Я пробовал каждый вариант «: base», и ничего не работает.

Я провел несколько тестов и поместил метод проверки в класс и использовал «: base», и он работает.

Но мне нужен метод проверки: suspitious_attachment issue_attachment остается в классе.

issue.rb 

has_many :attachments, class_name: 'IssueAttachment', dependent: :destroy, autosave: true 

issue_attachment.rb

validate :suspitious_attachment 

private 

def suspitious_attachment 
    if ends_with? '.bat', '.com', '.exe', '.src', '.cmd' 
    errors.add(:attachment, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1])) 
    end 
end 

def ends_with?(*args) 
    args.each do |arg| 
    return true if attachment.path.ends_with? arg 
    end 
    false 
    end 
end 

_form.html.erb

Кто знает ошибку?

Мой английский очень плохой? : PP

ответ

0

Я точно не знаю, каковы ваши ошибки, но я думаю, что у вас есть проблема с методом end_with.

Как было предложено ответами на другие вопросы, есть простые способы Ruby найти расширение и проверить его на список разрешенных типов. Пожалуйста, ознакомьтесь с этим: Find the extension of a filename in Ruby

Я бы испытал, что у вас есть правильные имена файлов в вашем методе suspitious_attachment, а затем используйте аналогичный метод, описанный в ответах выше.

Надеюсь, что это поможет