Как использовать метод gem (возвращающий строки) в качестве пользовательской проверки в приложении rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я новичок в RoR / Gems, это основной вопрос.

Я создал gem, MyNameGem, чтобы изучить процесс. Он содержит эти методы:

 def returnValidationString1
  puts 'Validation String'
end
def returnValidationString2
  puts 'ANother Validation String'
end
  

Я включил gem в простое приложение rails, кажется, все работает так, как ожидалось.
Я использую это для своей модели:

 validates :name => MyNameGem.returnValidationString1
  

То, что я пытаюсь создать, — это gem, который я могу использовать внутри процедуры проверки. Итак, например, я хочу сделать это: проверяет:name => (вызовите мой метод gem, верните строку и используйте эту строку в качестве требования к проверке)

Ответ №1:

puts выводится только на консоль.

если вы хотите вернуть ‘MyNameGem’, напишите return 'MyNameGem' или просто 'MyNameGem , потому что последняя строка возвращается автоматически.

Ответ №2:

Функция puts заключается в том, чтобы выводить данные на консоль, так что это именно то, что он будет делать. Однако то, что делает ваш вызов validates, довольно необычно и, похоже, не имеет никакого смысла. Ваш код оценивается как:

 validates :name => (puts "MyNameGem")
  

На самом деле это ничего не значит. puts обычно возвращает nil .

Если вы хотите написать пользовательскую процедуру проверки, которая хранится в gem, это другой вопрос.

Комментарии:

1. Я понимаю, о чем вы говорите. То, что я пытаюсь создать, — это gem, который я могу использовать внутри процедуры проверки. Итак, например, я хочу сделать это: проверяет:name => (вызовите мой метод gem, верните строку и используйте эту строку в качестве требования к проверке)

2. Я могу вроде как разобрать, что вы говорите, но это просто не сработает. Это не то, как validates предполагается принимать аргументы. Вы можете вернуть хэш, если хотите, это будет работать лучше: validates :name, MyGem.my_method например.