Ты прав, Адитья. Помещение зависимого от среды кода в модели не является хорошим решением. Но вы можете «заглушить» bypass_humanizer?
при необходимости:
# user.rb
class User
include Humanizer
require_human_on :create, :unless => :bypass_humanizer?
protected
def bypass_humanizer?
false
end
end
# step definitions for your scenarion
And /^I fill in the captcha correctly$/ do
# from now any instance of User class will skip require_human_on validator
User.any_instance.stubs(:bypass_humanizer?).returns(true)
end
# in Gemfile
group :development, :test do
gem "mocha"
end
Теперь у вас есть модель с кодом, не зависящим от среды, и вы можете перевести ее в определенное состояние в любое время, когда вам нужно (конечно, для тестирования).