J'ai une application Rails 3.1 avec les 2 modèles suivantsrails problème inflexion 3.1
class Listing < ActiveRecord::Base
has_many :listing_saves
end
class Team < ActiveRecord::Base
has_many :listing_saves
has_many :saved_listings, through: :listing_saves, source: 'listing'
end
Le modèle Adhérez ressemble à ce
class ListingSave < ActiveRecord::Base
belongs_to :team
belongs_to :listing
end
Mow Je pense qu'il ya un problème d'inflexion, car chaque fois que je essayer d'exécuter mes tests je reçois l'erreur suivante (ceci est un exemple d'erreur et le test qui l'a causé)
it "should return the listing saves associated with the team" do
save = Factory :listing_save, listing: @listing, saver: @user, team: @team
@team.listing_saves.should include save
end
Failures:
1) Team listing_saves associations should return the listing saves associated with the team
Failure/Error: @team.listing_saves.should include save
NameError:
uninitialized constant Team::ListingSafe
# ./spec/models/team_spec.rb:55:in `block (3 levels) in <top (required)>'
comme si Rails est singularisation listing_saves
dans listing_safe
Voici (aucun d'entre eux travaillent)
# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.plural 'saved_listing', 'saved_listings'
inflect.singular 'saved_listings', 'saved_listing'
inflect.plural 'listing_save', 'listing_saves'
inflect.singular 'listing_saves', 'listing_save'
inflect.singular 'listing_safes', 'listing_safe'
inflect.plural 'listing_safe', 'listing_safes'
inflect.irregular 'listing_save', 'listing_saves'
inflect.irregular 'saved_listing', 'saved_listings'
end
quelques Inflecteur personnalisés que j'ai essayé (pas tous en même temps) Que puis-je faire?
Note: Je trouve la this similar question mais la réponse ne semble pas résoudre mon problème
Modifier J'ai suivi la réponse ci-dessous pour que j'ai maintenant ce qui suit dans mon config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'listing_save', 'listing_saves'
end
Lorsque j'ouvre une session de console et exécute "listing saves".singularize
je reçois "listing_save" comme j'espère. Cependant, il semble qu'au moins une partie de mon application ne l'obtienne pas, mes tests échouent toujours de la même manière qu'avant. (Je jure que je redémarre mon serveur et spork avant de tester/exécuter l'application!).
Edit 2 j'ai écrit quelques tests pour flexions dans mon application:
describe "inflection" do
it "should singularize listing_saves properly" do
"listing_saves".singularize.should == "listing_save"
end
it "should pluralize listing_save properly" do
"listing_save".pluralize.should == "listing_saves"
end
end
Maintenant, j'ai une situation où ces tests passent bien, mais d'autres tests échouent toujours avec la même erreur que je faisais avant
NameError:
uninitialized constant User::ListingSafe
Même application, même instance spork, mêmes fichiers chargés. Quelque chose de bizarre se passe ici!
Voir mon nouveau commentaire ci-dessous. – Casper
Peut-être question idiote mais ... si ça vous donne autant de problèmes - pourquoi ne pas trouver un autre nom pour cela? ;) –
Haha ouais bien sûr, nous savons tous les deux que je ne peux pas me laisser battre si! –