Chciałbym dodać doskonałą odpowiedź Jona Garvina. Jest to podobne do jego wersji, ale nie używa metody method_missing (która jest trochę przerażająca w kontekście globalnym i nie pozwala na jej zakończenie). Czeka również, aż wywołasz load_fixtures z irb przed załadowaniem urządzeń.
Włóż to do pliku .irbrc lub po prostu wklej tutaj.
# Loads all fixtures, then defines the Rails fixture helpers.
# For example: users(:jon) will load the jon fixture from fixtures/users.yml
def load_fixtures
require 'active_record/fixtures'
Dir["#{Rails.root}/{test,spec}"].each do |dir|
Dir["#{dir}/fixtures/*.yml"].map { |filename| filename.match(/\/([^\/]+)\.yml/)[1].to_sym }.each do |name|
ActiveRecord::FixtureSet.create_fixtures('spec/fixtures', name)
define_method(name) { |*args|
name.to_s.singularize.titleize.constantize.find(ActiveRecord::FixtureSet.identify(args[0]))
}
end
end
end
Przykład użycia:
$ irb
irb(main):001:0> load_fixtures
=> ["oweto/spec"]
irb(main):002:0> users(:chuy)
=> #<User id: 242462757, email: "[email protected]", password_digest: ...>
daj mi znać, jeśli chcesz kilka wskazówek factory_girl. Jestem pewien, że jest wystarczająco potężny, aby poradzić sobie z jakąkolwiek złożonością, z którą obecnie się borykasz w swoich urządzeniach. –