Como se describe en this article, estoy usando asociaciones automáticas en los dispositivos. Por ejemplo, si un objeto de región tiene una identificación de país, en lugar de hacer "country_id": 1, hago "country": "USA". "USA" es una etiqueta en mi archivo countries.yml, por lo que Fixtures sabe cómo encargarse de esto. Sin embargo, esto solo funciona cuando no especifica un valor de ID para el objeto de países. Así que no puedo asignar el ID de EE. UU. A 1. Pero si no lo asigno a ser 1, termina siendo un gran valor 8974343 ... que es un poco extraño. ¿Hay alguna manera de obtener accesorios para generar automáticamente identificadores que no sean súper altos? .... ¿o está bien?Asociaciones automáticas en ruby on rails fixtures
Respuesta
Al leer la documentación de la API, así es exactamente como se supone que se comportan los dispositivos autogenerados: si desea tener un valor de ID específico para un dispositivo por adelantado, probablemente debería asignarlo usted mismo.
Si no, bueno, a partir de los documentos de la API:
The generated ID for a given label is constant, so we can discover any fixture‘s ID without loading anything, as long as we know the label.
Identificación del accesorio viene directamente de hash su nombre (que es como "podemos descubrir Identificación de cualquier accesorio sin cargar nada, siempre y cuando saber la etiqueta ")
Así es como se obtiene una identificación autogenerada de la etiqueta del accesorio.
Fixtures.identify(:reginald)
Como este artículo SO me ayudó mucho, me gustaría dar una actualización para Rails 4.1.0.rc1: <% = ActiveRecord :: FixtureSet.identify (: reginald)%> – Chris
Tuve que incluir la clase que el etiqueta a la que se hace referencia. http://ruby-journal.com/rails/define-fixtures-with-polymorphic-association/ – Shadoath
Dado que no tengo la reputación suficiente para comentar, esto es los carriles actuales 4.1 documentación:
Bajo Fixture etiqueta de interpolación:
monkey_id: <%= ActiveRecord::FixtureSet.identify(:reginald) %>
pirate_id: <%= ActiveRecord::FixtureSet.identify(:george) %>
prueba automatizada de imponer la integridad del dispositivo
class FixtureIntegrityTest < ActiveSupport::TestCase
context "fixture integrity" do
should "work" do
fixtures = Dir["test/fixtures/*.yml"].map do |file|
[file, File.basename(file).sub(/\..*/, "").singularize, YAML.load(ERB.new(File.read(file)).result)]
end
failures = fixtures.reject(&:last).map { |file,*| "#{file} is empty!"}
failures = failures.presence || fixtures.map do |_, klass, content|
content.select{ |_,fixture| fixture["id"] }.map do |name, _|
fixtures.map do |file, _, content|
content.select { |_,fixture| fixture[klass] == name }.map do |_, fixture|
"#{file} uses #{klass}: #{name}, but should use the id!"
end
end
end
end.flatten.compact
assert_equal [], failures
end
end
end
- 1. Rails Fixtures vs. Mocks
- 2. Ruby on Rails ActiveRecord: pluralization
- 3. Triple unión en Ruby on Rails
- 4. Ruby vs. Ruby on Rails
- 5. Ruby on Rails: descargable
- 6. Ruby on Rails will_paginate
- 7. Ruby on Rails Switch
- 8. Docsplit Ruby on Rails
- 9. Ruby on Rails enviar
- 10. Ruby on Rails en IIS?
- 11. Cómo dominar Ruby on Rails
- 12. Ruby on rails y Node.js
- 13. SSL con Ruby on Rails
- 14. ¿Cómo funciona Ruby on Rails?
- 15. Ruby on Rails: Running Tests
- 16. Ruby on rails application root
- 17. Usos de Ruby on Rails
- 18. Busting Ruby on Rails Myths
- 19. Django o Ruby on Rails
- 20. Ruby on Rails: Hello World
- 21. link_to con Ruby on Rails
- 22. Ruby on Rails Debug Pregunta
- 23. Ruby on Rails vs Django
- 24. Ruby on Rails config.secret_token error
- 25. Ruby on Rails redirect_to arguments
- 26. Ruby on rails connection problem
- 27. Ruby on Rails - Método estático
- 28. Ruby on Rails: formulario select
- 29. Columna decimal Ruby on Rails
- 30. Ruby on Rails - ¿Variables globales?
¿Por qué crees que las personas aceptan respuestas pero no las votan? –