SORU
23 NİSAN 2009, PERŞEMBE


Ruby on Rails. Nasıl Aktif Kaydı kullanırım .yöntem :ilişki ait yapı?

Bu herhangi bir belge bulmak mümkün olmuştur .Raylar yöntem (şu anda 2.0.2 kullanıyorum) oluşturmak.

Deney yoluyla ya da kaydı kaydetmeden önce inşa yöntemi has_many bir ilişki içine kayıt eklemek için kullanabilirsiniz gibi görünüyor.

Örneğin:

class Dog < ActiveRecord::Base
  has_many :tags
  belongs_to :person
end

class Person < ActiveRecord::Base
  has_many :dogs
end

# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.save # => true

Bu yabancı anahtarları düzgün ile iki köpek ve etiket kazandıracak. Bu belongs_to bir ilişki içinde çalışmak için görünmüyor.

d = Dog.new
d.person.build # => nil object on nil.build

Ayrıca denedim

d = Dog.new
d.person = Person.new
d.save # => true

Yabancı anahtar Dog ayarlı değil bu durum nedeniyle aslında bu kez kurtardı, yeni bir kişi değil bir kimlik, çünkü kötü kaydedilmiş henüz.

Benim sorular şunlardır:

  1. Nasıl Raylar doğru sırayla kayıtları kaydetmek için nasıl anlamaya yeterince akıllı, böylece iş kurmak mı?

  2. Nasıl belongs_to bir ilişki içinde aynı şeyi yapabilir miyim?

  3. Bu yöntem herhangi bir belge bulabilirim?

Teşekkür ederim

CEVAP
24 NİSAN 2009, Cuma


Belgelenmiştir:

Has_many Derneği altında API belgelerine "Module ActiveRecord::Associations::ClassMethods"

toplama.(özellikleri = {}, ...)oluşturmak Bir veya daha fazla yeni nesneleri döndürür Bu koleksiyon türü öznitelikleri ve örneği bir bu nesneye bağlı yabancı anahtar, ama henüz değil kurtardı. Not: Eğer Bu sadece çalışır ilişkili nesne zaten var, nil olsaydı!

Ters yönde bina cevabını biraz değişmiş bir sözdizimi. Köpeklerle örnek,

Class Dog
   has_many :tags
   belongs_to :person
end

Class Person
  has_many :dogs
end

d = Dog.new
d.build_person(:attributes => "go", :here => "like normal")

hatta

t = Tag.new
t.build_dog(:name => "Rover", :breed => "Maltese")

Ayrıca create_dog anında kaydedilmiş olması için kullanabilirsiniz (karşılık gelen "" koleksiyonu diyebilirsin yöntem) oluşturmak . gibi

Nasıl raylar akıllı mı? Sihir (ya da daha doğrusu, ben bilmiyorum, öğrenmek isterim!)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Jabari Johnson

    Jabari Johns

    18 Ocak 2008
  • max2sims2

    max2sims2

    19 Kasım 2008