2013-09-16 2 views
1

내가 며칠 동안 스택, 모든 것을 시도했습니다.캔트 has_many 및 밑줄 작동

나는 간단한 많은 연관을 가지고 일을하려하지만, 작업을 거부 :

은 내가 필요한 것은 각 구 그것과 관련된 orb_type를 얻을 수 있다는 것입니다. 작동

class Orb < ActiveRecord::Base 
    has_many :orb_types 
    validates_associated :orb_types 
    attr_accessible :descr, :nome, :orb_type_id 
    validates :nome, uniqueness: true, presence: true 
end 

class OrbType < ActiveRecord::Base 
    attr_accessible :nome 
    validates :nome, uniqueness: true, presence: true 
    belongs_to :orb 
end 

그리고 만들기 위해 tryed :

rails generate scaffold orb_type nome 
rails generate scaffold orb nome:string descr:text orb_type_id:integer 

는 레이크 dB 확인 : 마이그레이션을

변화 모델

내가는 비계를 생성

$ rails c 
1.9.3-p448 :001 > tipo = OrbType.new nome: "Planeta" 
1.9.3-p448 :002 > tipo.save 
1.9.3-p448 :003 > tipo = OrbType.find(1) 
1.9.3-p448 :004 > planeta = Orb.new nome:"Testname", descr: "TestDescr" 
1.9.3-p448 :005 > planeta.orb_type = tipo 

및 마지막 줄에 오류가 발생합니다.

NoMethodError: undefined method `each' for #<OrbType:0x00000003dc02a0> 

거래가 어떻게됩니까? 밑줄과 철자 "관습"은 나에게 두통을주고있다.

많은 비슷한 주제가 있지만 솔루션 중 아무 것도 작동하지 않았습니다.

답변

2

귀하 협회 라운드 잘못된 방법입니다 : 많은 관계로 많은 가정

당신이 가장 가능성이 연관 모델을 필요로하는 목표입니다. (귀하의 발판 그냥 belongs_tohas_many 주위를 전환해야, 괜찮습니다.)

그래서 같은 모델을 변경합니다

지금 ORB는 유형을 부여 할 수와 종류가 많은 부여 할 수
class Orb < ActiveRecord::Base 
    belongs_to :orb_type 
    validates_associated :orb_types 
    attr_accessible :descr, :nome, :orb_type_id 
    validates :nome, uniqueness: true, presence: true 
end 

class OrbType < ActiveRecord::Base 
    has_many :orbs 
    attr_accessible :nome 
    validates :nome, uniqueness: true, presence: true 
end 

orbs.

+0

당신은 몇 개월 만에 나를 도왔던 첫 번째 사람입니다! 많은 고맙습니다! – Techmago

2

orb_type_idOrb 모델에있는 것이 문제의 일부입니다. Orb에는 OrbTypes이 많지만 orb_type_id은 하나만 허용하고 OrbTypeOrb에 속합니다. 즉 OrbType에는 orb_id이 필요합니다.

class Orb < ActiveRecord::Base 
    has_many :orb_types, :through => :orb_associations 
    has_many :orb_accociations 
    validates_associated :orb_types 
    attr_accessible :descr, :nome, :orb_type_id 
    validates :nome, uniqueness: true, presence: true 
end 

class OrbAccociations < ActiveRecord::Base 
    belongs_to :orb 
    belongs_to :orb_type 
end 

class OrbType < ActiveRecord::Base 
    attr_accessible :nome 
    validates :nome, uniqueness: true, presence: true 
    has_many :orb_associations 
    has_many :orbs, :through => :orb_associations 
end 
+0

다른 튜토리얼에서 나에게 그렇게했기 때문에 orb_type_id를 넣었습니다. 그리고 나는 그 예제를 작동 시켰습니다 ...하지만 그것은 밑줄을 전혀 가지지 않았고, 제 경우에 대해 알고 싶은 이유 때문에 그것을 재현 할 수 없습니다 : P – Techmago

+0

밑줄은 문제에 아무런 영향을 미치지 않습니다. 내 모델에 문제없이 항상 사용합니다. 문제는 명명 규칙보다는 모델 구조 인 것 같습니다. 당신은 무엇을 성취하려고 노력하고 있으며 나의 대답을 업데이트 할 수 있습니다. 귀하의 질문에 대한보기에서, 하나 또는 여러 OrbType을 가진 Orb와 어느 쪽이든 갈 수 있습니다. – kobaltz

+0

난 그냥 각 orb 항목을 하나의 orb_type을 갖도록하고 싶습니다. – Techmago