2012-10-29 13 views
7

Ruby on Rails konusunda yeni. Şimdiye kadar sadece iskele kullanarak CRUD operasyonları oluşturdum. Şimdi, iki tüzel kişiyi, sabit kodlayarak değil, iskeleyi kullanarak tek bir formda birleştirmem gerekiyor.Ruby on Rails'te Kompozit varlık iskelesi

İki nesneyi komut dosyası kullanarak birlikte nasıl yapılandırabiliriz?

İki tarafım var, Student_address ve Student_phnumber. Bu iki varlığı, CRUD operasyonlarını yapabileceğim tek bir forma sokmak istiyorum ve bunu iskeleler ile gerçekleştirmek istiyorum.

Student_address vb Hse_name, STREET_NAME oluşan bir varlıktır Student_phnumber ph_number, tip oluşan başka bir varlık, vb

Ben birlikte bu iki varlık darağacına istiyorum.

+0

u 2 varlıkları ekleyerek ne demek istiyorsunuz .. Eğer biraz daha net olabilir? – AnkitG

+0

neden bu adamlar oy kullanmıyorlar? eğer oylamadan sonra lütfen sebebini açıklayınız. – Okky

+1

Sanırım yol yok. Belki de onu kodlamak zorundasınız! – cortex

cevap

6

Scaffolding tam temel kaynak modellemek için kurulmuş bir generator başka bir şey değildir. Varsayılan olarak Rails ile gelen, iskele dışında başka birçok jeneratörler vardır. Hiçbiri, ilgili bir dizi model için kaynak üretecek şekilde ayarlanmamıştır. Bunun büyük bir kısmının, böyle bir ilişkiyi ifade etmenin çok çeşitli yöntemleri nedeniyle, genel bir kullanıcı arabirimi oluşturmayı neredeyse imkansız hale getirdiğinden şüpheleniyorum. Ayrıca, iskele, ihtiyaçlarınızı karşılamak üzere değiştirilmek üzere, çok hızlı bir şekilde sizi çalıştırmak ve çalıştırmak için daha fazla ayarlanmıştır. Bu modifikasyonlar, önemsiz olmayan herhangi bir uygulama için genellikle yeterlidir. Orada popüler nifty generators dahil olmak üzere birçok 3. parti jeneratörler var, ama bildiğim kadarıyla üretmek istediğiniz kod türünü oluşturan hiçbiri yok. Bu, sık sık ayarlamanız gereken bir ilişkiyse, görevi ele almak için kendi oluşturucunuzu oluşturmayı düşünebilirsiniz - aslında oldukça kolaydır. Bunu yapmanın iyi bir yolu, ideal durumunuzu uygulamak ve daha sonra bir jeneratör oluşturmaktır.

Düzenleme: Ayrıca

, kendi değişken/özellik isimleri ayarlamak isteyebilirsiniz. Küçük harfle ve alt çizgilerle işaretlenmelidirler, dolayısıyla Street_namestreet_name olur. Keyfi kısaltmalar da kodlamayı/bakımı çok zorlaştırır, bu nedenle Student_phnumber, student_phone_number olarak daha iyi ifade edilir. Tutarlılık dışında (ph_number vs Student_phnumber) bunun nedeni, Rails'in kasa ve boşlukları internal methods like these içinde kullanmasıdır.

0

Bu sizin için mi arıyorsunuz?

rails generate scaffold Student student_address:string student_phnumber:string

+0

no Student_address, Hse_name, Street_name, vb. Öğelerinden oluşan bir varlıktır. Student_phnumber ph_number, type, vb. Içeren başka bir varlıktır. Bu iki varlığı birlikte iskeletlemek istiyorum – Okky

2

Seni anlıyor mu göreyim.

sizin tarif edilmektedir modeli/varlık ilişkidir: otomatik form ile bir kontrolör/view oluşturmak

a) otomatik modeller

b oluşturmak):

student 
    address 
    - house_name 
    - street_name 
    - etc 
    phone_number 
    - number 
    - area_code 
    - etc 

Sen istiyoruz adres ve telefon numarası

Tamam kurmak için alanlar dahil olmak üzere, bir öğrenci oluşturun. b) Rails iskelesi ile yapılamaz. Bununla birlikte, bunu elde etmek için ActiveSupport gemini (docs here) kullanabilirsiniz.ilişkileri

gem install active_scaffold 
rails g active_scaffold Student name:string 
rails g active_scaffold PhoneNumber area_code:integer number:integer student_id:integer 
rails g active_scaffold Address first_line:string second_line:string student_id:integer 

Burada yapmanız gerekecek sadece el işi modelleri içine pop ve ekleyin: Ne ActiveScaffold yapacak otomatik olarak üretmek

Address 
belongs_to :student 
PhoneNumber 
belongs_to :student 
Student 
has_one :address 
has_one :phone_number 

olduğunu

İşte böyle yapar Eğer böyle bir görünüm:

enter image description here

Bu formda Dolgu ve modelleri tüm sav olacak ed ve birlikte bağlı!