method
setup_fixture_accessors
v4.2.7 -
Show latest stable
- Class:
ActiveRecord::TestFixtures::ClassMethods
setup_fixture_accessors(fixture_set_names = nil)public
No documentation available.
# File activerecord/lib/active_record/fixtures.rb, line 880
def setup_fixture_accessors(fixture_set_names = nil)
fixture_set_names = Array(fixture_set_names || fixture_table_names)
methods = Module.new do
fixture_set_names.each do |fs_name|
fs_name = fs_name.to_s
accessor_name = fs_name.tr('/', '_').to_sym
define_method(accessor_name) do |*fixture_names|
force_reload = fixture_names.pop if fixture_names.last == true || fixture_names.last == :reload
@fixture_cache[fs_name] ||= {}
instances = fixture_names.map do |f_name|
f_name = f_name.to_s
@fixture_cache[fs_name].delete(f_name) if force_reload
if @loaded_fixtures[fs_name][f_name]
@fixture_cache[fs_name][f_name] ||= @loaded_fixtures[fs_name][f_name].find
else
raise StandardError, "No fixture named '#{f_name}' found for fixture set '#{fs_name}'"
end
end
instances.size == 1 ? instances.first : instances
end
private accessor_name
end
end
include methods
end