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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top