#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
например.