2

나는 다음과 같은 코드가 있습니다"초기화되지 않은 상수"오류가 발생하는 이유는 무엇입니까?

zombie = Zombie.first 
role = Role.first 
zombie.assignments.create(role: role) 

나는 다음과 같은 오류가 점점 오전 :

NameError: uninitialized constant Zombie::Assignment. 

내가 했를이 코드를 실행하려고하면 콘솔에서

class Zombie < ActiveRecord::Base 
    attr_accessible :name, :rotting, :age 
    has_many :assignments 
    has_many :roles, through: :assignments 
end 

class Role < ActiveRecord::Base 
    attr_accessible :title 
    has_many :assignments 
    has_many :zombies, through: :assignments 
end 

class Assignments < ActiveRecord::Base 
    attr_accessible :role_id, :zombie_id 
    belongs_to :zombie 
    belongs_to :role 
end 

을, 여기에 실수를 저질렀습니까?

답변

0

시도는 콘솔에 다음 코드를 실행합니다

zombie = Zombie.first 
zombie.roles << Role.find_by_title("Title") 
zombie.roles 
+0

이 솔루션을 사용하면 문제가 해결되지만 해결되지는 않습니다. Rails 모델은 단 하나입니다. Assignments를 Assignment로 변경하는 것을 고려하십시오. –

4

레일스 모델은 단수이므로 AssignmentsAssignment으로 변경하십시오.

+0

지금은이 오류 ActiveModel :: MassAssignmentSecurity :: 오류가 점점 오전 : 대량 할당 보호 할 수 없습니다 속성 : 역할 –

+1

만 attr_accessible 속성은 질량 할당을 . 귀하의 경우 역할은 attr_accessible에 정의되어 있지 않습니다. ** has_many through를 정의 할 때 'zombie.assignments.create (role_id : role)', 레일스는 role_id, zombie_id는 attr_accessible로 사용하면됩니다. ** 따라서 'attr_accessible : role_id, : zombie_id'는 필요 없습니다. – Tukuna

관련 문제