Tabela de trilhos Heritance de mesa única com acessórios HABTM em testes de unidade Nomethoderror: Método indefinido `Singularize '

StackOverflow https://stackoverflow.com/questions/2369895

Pergunta

Imagine uma estrutura de modelo da seguinte maneira:

modelos/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

modelos/promoção.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

e mesas da seguinte forma:

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

Então eu tenho acessórios da seguinte maneira:

#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

Quando eu executo meu teste de unidade, ele retorna esta mensagem de erro:

1) Error:
test_the_truth(CartTest):
NoMethodError: undefined method `singularize' for :promotions_products:Symbol

Por favor, deixe -me saber se você tiver experiência semelhante ou saber como consertar isso, ou pelo menos o que você pensou estar errado, estou pronto para experimentar qualquer coisa!

Muito obrigado, por favor, não hesite em responder ... realmente desesperado aqui!

Foi útil?

Solução

A resposta é ... você não pode!

Infelizmente, mas às vezes os trilhos simplesmente não o correm. Nessas situações, apenas crie outro acessório para tabelas de associação.

Por exemplo, neste caso, promoções_products.yml e dentro dele você entra:

pp1:
    promotion_id: <%= Fixtures.identify(:cross_sell_1) %>
    product_id: <%= Fixtures.identify(:plumeboom_1) %>

Consegui usar conexões HABTM em acessórios, mas quando eles também estão tendo Rails de STI (herança de tabela única) parece ter problemas com ela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top