Pergunta

eu correr em um problema quando se usa uma relação um para muitos. Quero ter cada série tem uma editora e que um Publisher tem muitos Series.

Este é o meu modelo Editor:

class Publisher < ActiveRecord::Base
  validates_presence_of :name
  has_many :series
end

Este é o meu modelo de Série:

class Serie < ActiveRecord::Base
  belongs_to :publisher
end

Este é o teste falhar:

test "a publisher should have a list of series" do
  @publisher = Publisher.new :name => "Standaard Uitgeverij"
  @series = [ Serie.new(:name => "De avonturen van Urbanus", :publisher => @publisher),
              Serie.new(:name => "Suske en Wiske", :publisher => @publisher) ]
  assert_equal @series, @publisher.series
end

O teste falhar na última linha com NameError:. Não inicializado constante Editor :: Series

Eu tentei salvar a editora e da série, mas isso não funcionou. Eu tentei com apenas uma serie, mas isso dá o mesmo erro.

Desde que eu estou apenas começando com Rails e Ruby, eu estou em uma perda aqui. O que estou fazendo de errado?

Foi útil?

Solução

Para fazer face a sua pergunta real, como mencionado em seu comentário (? como posso citar o meu modelo "Series" ), você precisa fazer as Rails' Inflector ciente desta excepção às suas regras de pluralização padrão.

Adicione o seguinte ao config/environment.rb:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable 'series'
end

Isso permitirá que você nomear seu modelo como Series. Você pode testar se é trabalhado usando script/console:

>> "series".pluralize    #=> "series"
>> "series".singularize  #=> "series"

-Eu tenho que dizer que eu apenas tentei usando O Pluralizer e parece que Rails tem conhecimento de como lidar com a palavra série built-in. Tente você mesmo .

Outras dicas

Eu acredito que a resposta de John é um dos melhores.

Você também pode especificar diretamente o nome da classe na declaração has_many

has_many :series, :class_name => 'Serie'

Seu nome relacionamento has_many é bom, mas o nome do modelo está errado.

Como a série singular e plural de são ambas as séries, você precisa mudar o nome do modelo da Serie à série. Depois disso, tudo deve estar bem.

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