2012-11-21 7 views
5

多くのプロジェクトがこの中に包まれており、私は何の(大規模な)検索もしていないので、他の誰かが同様のスタックで作業しているかどうかを確認するためにフレアを投げています。Mongoid embeds_many/embedded_in ActiveAdminのFormtasticとの関係...?

Mongoid-enabled fork of ActiveAdminを使用して、Rails 3アプリの管理インターフェースを構築しています。

(これはFormtasticを使用してフォームを構築する)ActiveAdminはこれまで通りに演奏しているようです。しかし、このスタックをMongoidのembeds_manyembedded_inの関係で使用しようとすると、私は悩んでしまいました。私は良い市民になり、Mongoで適切なデータモデリング技術を使用しようとしていますが、Formtasticは一緒に遊びたくないようです。

難解かもしれないが、私が得ている特定のエラーを共有します。

良い解決策を見つけられない場合は、私はそれを吸い取って、has_manybelongs_toを使用します。私はMongoDBの主な利点をあきらめていることを知っています。ジョイン/複数のクエリの欠如が問題になるのに十分な大きさですが、私は最初から正しいことをやると思いました!)。それは、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. 
) 

、「event_idの」の代わりに、親文書(場所)のIDとしての私の選択を送信しようとしています。

とにかく - ここで私は丸い穴に四角いペグを合わせようとしていますが、だれかが思考を持っていれば大いに感謝します。

答えて

-1

エラーはそれをすべて言った。親を最初に作成しないで埋め込みレコードを作成することはできません。

はい、あなたのケースでは、has_manyとbelongs_toの関係が正しい選択になると思います。

関連する問題