Tôi ước mình có thể thêm vào câu trả lời tuyệt vời của Jon Garvin. Điều này giống như phiên bản của anh ta nhưng không sử dụng method_missing (điều này khá đáng sợ trong bối cảnh toàn cục và không cho phép hoàn thành tab). Ngoài ra, nó chờ đợi cho đến khi bạn gọi load_fixtures từ irb trước khi tải đồ đạc của bạn.
Chèn mã này vào .irbrc hoặc chỉ dán từ đây.
# 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
Ví dụ sử dụng:
$ irb
irb(main):001:0> load_fixtures
=> ["oweto/spec"]
irb(main):002:0> users(:chuy)
=> #<User id: 242462757, email: "[email protected]", password_digest: ...>
cho tôi biết nếu bạn muốn một số gợi ý factory_girl. Tôi chắc chắn rằng nó đủ mạnh để quản lý bất cứ điều gì phức tạp mà bạn đang xử lý trong đồ đạc của bạn. –