2012-11-21 17 views
5

Whew - bu projeye çok fazla proje sarıldı ve boşuna (bazı) kapsamlı aramalar yaptım, böylece başka birinin benzer bir yığınla çalışıp çalışmadığını ve bir çözümü olup olmadığını görmek için bir parlama fırlatıyorum.Mongoid, ActiveAdmin'de Formtastic ile embedded_many/embedded_in ilişkileri ...?

Rails 3 uygulaması için bir yönetici arayüzü oluşturmak için Mongoid-enabled fork of ActiveAdmin kullanıyorum. Şimdiye kadar (Formtastic kullanarak formlarını oluşturan) ActiveAdmin şimdiye kadar oynamak gibi görünüyor. Ancak bu yığının Mongoid'in embeds_many ve embedded_in ilişkileriyle kullanılmaya çalışılmasında bir takla atıyorum. İyi bir vatandaş olmaya çalışıyorum ve Mongo ile uygun veri modelleme tekniğini kullanıyorum ama Formtastic birlikte oynamak istemiyor.

Belirli bir hatayı paylaşıyorum, ancak esoteric olabilir.

Eğer iyi bir çözüm bulabilirsem, MongoDB'nin ana avantajından vazgeçmeyeceğimi bilmeme rağmen has_many ve belongs_to'u kullanıyorum. Katılma/çoklu sorgular olmaması için yeterince büyük bir sorun, ama ben baştan doğru şeyler şeyler yapacağım düşündüm!). Bu f.input :location hattı ve atma boğulmadan

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) 

Ben :as => :check_boxes için :as => :select değişti ve aslında doğru Konumları görüntülemek için aldım (gerçi onay kutularını, seçkin veya radyo olarak değil). Ama formu göndererek üzerine, o zaman bir ile karşılandı ediyorum: Çiğ sunulması baktığımızda

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

, bunun yerine üst belgesi (Yer) ait id "EVENT_ID" olarak benim seçim göndermeye çalışıyor. Her neyse - benim bağırsağım, buradaki yuvarlak bir deliğe kare bir mandal takmaya çalışıyorum, ama eğer herhangi birinin herhangi bir fikri varsa, çok takdir edilecektir.

cevap

-1

Hata, her şeyi söyledi. İlk önce ana oluşturulmadan gömülü bir kayıt oluşturamazsınız.

Ve evet, sanırım, has_many ve belongs_to ilişkisinde doğru seçim olacaktır.