Документация для приборов ActiveRecord гласит:
Помимо доступа к базе данных, к данным прибора также можно получить доступ с помощью специального динамического метода, который имеет то же имя, что и модель, и принимает имя прибора для создания экземпляра:
И приводит этот пример.
test "find" do
assert_equal "Ruby on Rails", web_sites(:rubyonrails).name
end
Как именно Ruby on Rails вставляет "web_sites" в пространство имен таким образом? Я читаю документацию и исходный код в lib / active_record / fixtures.rb и не могу понять.
Я спрашиваю, потому что (и, возможно, есть другой способ сделать это), я работаю над приложением, которое имеет много приборов и работает медленно, и я хотел бы получить способ динамической загрузки приборов перед одним набором тестов, поэтому мы не загружаем их каждый раз.
Сейчас лучшее решение, которое у меня есть, это сделать что-то вроде этого:
result = ActiveRecord::FixtureSet.create_fixtures("test/largefixtures", "web_sites")
rails_site = result[0].all_loaded_fixtures["web_sites"]["rubyonrails"].find
Это кажется довольно хрупким, не говоря уже о том, что я не уверен, как сохранить результат create_fixtures в области видимости в других местах файла.