У меня есть приложение Rails 3.1 со следующими 2 моделями
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
Модель соединения выглядит следующим образом
class ListingSave < ActiveRecord::Base
belongs_to :team
belongs_to :listing
end
Мне кажется, что существует проблема перегиба, потому что всякий раз, когда япри попытке запустить мои тесты я получаю следующую ошибку (это пример ошибки и теста, который ее вызвал)
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)>'
, как будто Rails сингулярно listing_saves
в listing_safe
Вот некоторые пользовательские инфлекторы, которые я пробовал (не все одновременно) (ни один из них не работает)
# 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
Что я могу сделать дальше?
Примечание: я нашел этот похожий вопрос , но ответ, похоже, не решает мою проблему
Редактировать Я следовал приведенному ниже ответу, так что теперь у меня есть следующее в моем config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'listing_save', 'listing_saves'
end
Когда я открываю консольный сеанс и запускаю "listing saves".singularize
, я получаю "list_save", как я надеюсь.Однако, похоже, что, по крайней мере, часть моего приложения не получает его, мои тесты по-прежнему не проходят так же, как и раньше.(Клянусь, я перезагружаю свой сервер и spork перед тестированием / запуском приложения!).
Редактировать 2 Я написал несколько тестов на наличие перегибов в моем приложении:
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
Теперь у меня есть ситуация, когда эти тесты проходят нормально, но другие тесты по-прежнему не проходят с той же ошибкой, которая была у меня до
NameError:
uninitialized constant User::ListingSafe
То же приложение, тот же экземпляр Spork, те же файлы загружены.Здесь происходит что-то странное! ??