Schienen Single Table Inheritance mit HABTM Fixture in Unit-Test zurückzukehr NoMethodError: undefined Verfahren `vereinzeln‘
Frage
Stellen Sie sich eine Modellstruktur wie folgt:
Modelle / cross_sell_promotion.rb
class CrossSellPromotion < Promotion
has_and_belongs_to_many :afflicted_products, :join_table => :promotion_afflicted_products, :foreign_key => 'promotion_id', :association_foreign_key => 'product_id', :class_name => 'Product'
has_and_belongs_to_many :afflicted_categories, :join_table => :promotion_afflicted_categories, :foreign_key => 'promotion_id', :association_foreign_key => 'category_id', :class_name => 'Category'
. . .
end
Modelle / promotion.rb
class Promotion < ActiveRecord::Base
has_and_belongs_to_many :products, :join_table => :promotions_products
has_and_belongs_to_many :categories, :join_table => :promotions_categories
- - -
end
und Tabellen wie folgt:
table promotions
type :string
...some other fields unrelated to this problem
table promotions_products
promotion_id :integer
product_id :integer
table promotion_afflicted_products
promotion_id :integer
product_id :integer
table promotion_afflicted_categories
promotion_id :integer
category_id :integer
Dann habe ich ein Leuchten wie folgt:
#promotions.yml
cross_sell_1:
products: plumeboom_1, plumeboom_2
value: 100
value_type: percentage
type: CrossSellPromotion
#products.yml
plumeboom_1:
model: plumeboom1
url: plumeboom-1
plumeboom_2:
model: plumeboom2
url: plumeboom-2
plumeboom_3:
model: plumeboom3
url: plumeboom-3
Wenn ich meine Unit-Test laufen, es gibt diese Fehlermeldung:
1) Error:
test_the_truth(CartTest):
NoMethodError: undefined method `singularize' for :promotions_products:Symbol
Bitte, lassen Sie mich wissen, wenn Sie ähnliche Erfahrung haben, passieren oder wissen, wie diese zu beheben oder zumindest genau das, was Sie dachten, könnte falsch sein, ich bin bereit, alles zu versuchen!
Vielen Dank, zögern Sie bitte nicht antworten ... hier wirklich verzweifelt!
Lösung
Die Antwort ist ... Sie können nicht!
Leider aber manchmal Rails wird es einfach nicht schneiden. In diesen Situationen nur eine weitere Befestigung für Zuordnungstabellen erstellen.
z. in diesem Fall promotions_products.yml und im Innern Sie Folgendes eingeben:
pp1:
promotion_id: <%= Fixtures.identify(:cross_sell_1) %>
product_id: <%= Fixtures.identify(:plumeboom_1) %>
konnte ich HABTM Verbindungen in Vorrichtungen verwenden, aber wenn sie sind auch mit STI (einzelne Tabelle Vererbung) Schienen scheint Probleme damit zu haben.