2011-01-30 27 views
5
arası

İki modelim var: Yönetmen ve Film ve Yol Tarifleri adlı üçüncü bir katılım modeli. Bunlar gibi tanımlanmıştır:has_many ile ilişkilendirme oluşturma veya güncelleştirme: ile

Film:

class Movie < ActiveRecord::Base 
    has_many :directions 
    has_many :directors, :through => :directions 
end 

Yönetmen:

class Director < ActiveRecord::Base 
    has_many :directions 
    has_many :movies, :through => :directions 
end 

Tarifi:

class Direction < ActiveRecord::Base 
    belongs_to :movie 
    belongs_to :director 
end 

Bir film yaratıyorum, ya sağlanan bilgileri (isim ve imdb_id) ile bir yönetmen oluşturabiliyorum ya da imdb_id'e dayanarak varolan bir direktörü bulabilir ve Film kaydı ile ilişkilendirebilirim.

Esasen, şimdiye kadar, silmek veya bir yönetmen düzenlemek istemiyoruz. Ben sadece onun imdb_idine dayanmayan yeni bir yönetmen yaratabilmek veya bir film oluştururken veya düzenlerken mevcut bir direktörle ilişkilendirmek istiyorum.

sorum nasıl görünüm/denetleyicisi tüm bu kadar bağlarım, nedir? accepts_nested_attributes_for

sen istemediğim bir film düzenleme yaparken aslında yönetmenin adını düzenleyebilirsiniz dışında çalışıyor. Asıl direktörlerin, sadece derneklerin güncellenmesi/imha edilmesine kesinlikle hiç ilgi duymuyorum.

cevap

3

Film örneğinizde, ilişkilerin kimliklerini içeren bir yönetmen dizileri vardır. Böylece kolaylıkla ilişkilerini kontrol etmesini isteyin onay kutuları ve örneğin bütün yönetmenler ...

<% Director.all.each do |director| %> 
    <%= check_box_tag 'movie[director_ids][]', director.id, @movie.directors.include?(director) %> 
    <%= director.name # or whatever (title, etc) %> 
<% end %> 

<%= hidden_field_tag 'movie[director_ids][]', '' %> 

(director_ids boş olacak şekilde kullanıcı tüm kutuların işaretini zaman hidden_tag olduğunu listeleyebilirsiniz.

+0

Teşekkürler, bu beni oraya götürür. En sonunda birkaç yöneticiye (yüzlerce) sahip olacağım, böylece bunların hepsini göstermeyeceğim, fakat bunu iyi bir AJAX arama sihriyle düzeltebilirim. Uygulanacağından emin olmadığım bir özel kullanım durumum var. Steven Spielberg'in yönetmen olarak bir film yarattığını varsayalım. Sonra aslında onu yönlendirmediğini fark ettim ama James Cameron yaptı ve henüz DB'de James Cameron yok. Çözümünüzle Steven Spielberg’in işaretini kaldırabilirim ancak James Cameron’u nasıl ekleyebilirim ve Yönetmen DB kaydı ve derneği nasıl kurabilirim? Teşekkürler! –

İlgili konular