2012-05-30 2 views
0

를 통해 인스턴스를 구축 나는 내가 생각하는 단순한 구조가 : 액티브 :: InverseOfAssociationNotFoundError : has_many

class GroupEvent < ActiveRecord::Base 
    attr_accessible :user_id, :title, :description, :identifier, :start_date, :end_date, :time_zone, :url, :capacity, :info_url, :logo_url, :logo_ssl_url, :status 

    has_one :event_venue 
    has_one :event_organizer 
    has_one :event_ticket 
    has_one :event_condition 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    attr_accessible :email, :name, :password, :password_confirmation 
    has_secure_password 

    has_many :group_events 
    ... 
end 

하지만 실행 레일 콘솔

@user = User.new 
@event = @user.group_events.build 

내가 오류가 발생합니다 : group_events (GroupEvent의 user : 사용자)에 대한 역 연관을 찾을 수 없습니다.

업데이트 : 여전히 사용자와 GroupEvent를 서로 볼 수 없습니다. GroupEvent.new 및 EventVenue.new 새로운 객체를 생성하고 정상적으로

@event = GroupEvent.new 
@venue = @event.build_event_venue 

는에 @ event.event_venue 개체를 만듭니다. (: 정의되지 않은 메서드`빌드 '무기 호에 대한 : 난 아직도 혼동하고있어 비록

@event.event_venue.build 

은 NoMethodError을 반환. NilClass)

+0

'@ user.build_group_event'은 어떻게됩니까? –

+0

"방법 없음 오류"가 표시됩니다. 그것은 정말로이 두 가지 사이의 연관성을 그리지 않는 것처럼 보입니다. @ user.group_events.nil조차도? 동일한 역 연관 오류를 반환합니다. @ event = GroupEvent.new가 성공적으로 이벤트를 만듭니다. @KyleDecot의 회신에 감사드립니다. Stack에 대해 묻는 것은 이번이 처음이었고, 지금까지 코멘트를 보지 못했습니다. – webmktr

답변

0

업데이트 : 그것은 작동합니다.

@event = @user.group_event.build 

은 새 GroupEvent 객체를 만듭니다. 후에 오는 누군가를 위해, 나는 사과한다, 나는 내가 한 것을 모른다. 위의 코드는 모두 여전히 같습니다. 변경을 할 때마다 콘솔을 다시 시작해야한다는 것을 알지 못했지만 콘솔을 다시 시작하면 문제가 해결되는 것처럼 보였습니다.

느린 질문은 저를 괴롭 히고 있습니다. @ user.build_group_event와 @ user.group_event.build 모두 동일한 결과 (GroupEvent 객체)를 생성하지만 다른 클래스의 경우 @ event.build_event_venue는 객체를 생성하지만 @ event.event_venue.build는 여전히 "NoMethodError : undefined nil을위한`build '메소드 : NilClass ". 나는 그것을 이해할 수 없다. 하지만 코드를 작성했기 때문에 너무 큰 거래를하지 않을 것입니다.

도움 주셔서 감사합니다.

+0

건물 관련 모델은 'has_one'및 'has_many'연관에 대해 다르게 작동합니다. 모델'has_many : foos'가 있다면,'self.foos.build'를 호출 할 수 있습니다. 그러나'has_one : foo'이라면'self.build_foo'를 호출해야합니다. – gmcnaughton