문제

하나에서 많은 관계를 사용할 때 문제가 발생합니다. 각 시리즈에 하나의 게시자가 있고 그 출판사는 많은 시리즈를 가지고 싶습니다.

이것은 내 게시자 모델입니다.

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

이것은 내 세리에 모델입니다.

class Serie < ActiveRecord::Base
  belongs_to :publisher
end

이것은 실패한 테스트입니다.

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

Test는 Nameerror : Unitialized Constant Publisher :: Series와 함께 마지막 줄에서 실패합니다.

게시자와 시리즈를 저장하려고했지만 작동하지 않았습니다. 하나의 세리로 만 시도했지만 동일한 오류가 발생합니다.

난 그냥 레일과 루비로 시작했기 때문에 여기서 잃어 버렸습니다. 내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

귀하의 의견에 언급 된대로 귀하의 실제 질문을 해결하기 위해 (내 모델 "시리즈"를 어떻게 지정할 수 있습니까?), 당신은 레일을 만들어야합니다 ' 인자 이 예외를 기본 복수 규칙에 대해 알고 있습니다.

다음을 추가하십시오 config/environment.rb:

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

이렇게하면 모델을 이름으로 지정할 수 있습니다 Series. 당신은 그것이 사용했음을 테스트 할 수 있습니다 script/console:

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

- 방금 사용해 보았다고 말해야합니다 다원자 그리고 Rails는 단어를 처리하는 방법에 대한 지식이있는 것 같습니다. 시리즈 내장. 직접 시도해보십시오.

다른 팁

요한의 대답이 최고라고 생각합니다.

Has_many 선언에서 클래스 이름을 직접 지정할 수도 있습니다.

has_many :series, :class_name => 'Serie'

당신의 has_many 관계 이름은 괜찮지 만 모델 이름은 잘못되었습니다.

단수 및 복수의 시리즈는 모두 시리즈이므로 Serie에서 Series로 모델의 이름을 바꿔야합니다. 그 후에는 모든 것이 괜찮을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top