2012-11-21 2 views
5

휴무 - 많은 프로젝트가이 랩에 쌓여 있으며 아무런 도움이되지 않는 곳에서 검색을 수행했습니다. 따라서 다른 누군가가 유사한 스택을 사용하고 있는지 확인하고 해결책을 찾을 수 있습니다.Mongoid embeds_many/embedded_in ActiveAdmin의 Formtastic과의 관계 ...?

Mongoid-enabled fork of ActiveAdmin을 사용하여 Rails 3 앱용 관리 인터페이스를 구축하고 있습니다.

(Formtastic을 사용하여 양식을 작성하는) ActiveAdmin이 지금까지 재생되고있는 것으로 보입니다. 하지만 Mongoid의 embeds_manyembedded_in 릴레이션과 함께이 스택을 사용하려고 할 때 걸렸습니다. 나는 훌륭한 시민이되고 Mongo와 함께 적절한 데이터 모델링 기술을 사용하려고 노력하고 있지만 Formtastic은 함께 놀고 싶어하지 않습니다.

난해한 내용 일지 모르지만 구체적인 오류는 공유 할 것입니다.

좋은 해결책을 찾을 수 없다면 MongoDB의 주된 이점을 포기할 것임에도 불구하고 그것을 빨아 들여 has_manybelongs_to을 사용하십시오. 조인 부족/여러 쿼리가 문제가 될 정도로 크지 만, 처음부터 올바르게 할 것이라고 생각했습니다!). 그것은 f.input :location 라인과 던지기에 질식

class Location 
    include Mongoid::Document 
    embeds_many :events 
    field :venue_name, type: String 
end 

class Event 
    include Mongoid::Document 
    embedded_in :location 
    field :event_name, type: String 
end 

ActiveAdmin.register Event do 
    form do |f| 
    f.inputs do 
     f.input :event_name 
     f.input :location, :as => :select 
    end 
    f.buttons 
end 

:

ActionView::Template::Error (undefined method `event_id' for #<Event:0x007fa4224a20e0>): 
1: insert_tag renderer_for(:new) 

내가 :as => :check_boxes:as => :select을 변경하고 실제로 정확한 위치를 표시하는 데있어 (하지만 확인란하는 선택 또는 라디오하지). 그러나 양식을 제출하기에, 내가 다음에 인사 해요 : 원시 제출보고에서

Mongoid::Errors::NoParent (
    Problem: 
    Cannot persist embedded document Event without a parent document. 
) 

, 대신 부모 문서 (위치)의 id의 "EVENT_ID"나의 선택을 보내려고합니다.

어쨌든 - 내 직감은 사각형의 못을 여기 둥근 구멍에 끼워 넣으려는 것이지만, 다른 누군가가 어떤 생각을 갖고 있다면, 그들은 대단히 감사 할 것입니다.

답변

-1

오류가 모두 있습니다. 먼저 부모를 만들지 않고 포함 된 레코드를 만들 수 없습니다.

그리고 네, 당신 생각에는 has_many와 belongs_to 관계가 올바른 선택 일 것이라고 생각합니다.