2013-03-06 9 views

cevap

32

Basit bir ilişkide, iki model yalnızca tek bir şekilde ilişkilendirilebilir ve ilişkinin adı otomatik olarak ilişkili olduğu modelin adıdır. Bu çoğu durumda iyidir, ancak her zaman yeterli değildir.

inverse_of, atıfta bulunduğunuz ilişkiyi belirtmenize izin verir. Bu, ilişkileriniz için özel adlar kullanmak istediğiniz durumlarda yararlıdır. Örneğin: Bu örnekte, kullanıcılar hem istekte bulunabilir hem de biletlere atanabilirler. Bu iki ayrı ilişkiyi temsil etmek için, aynı modele ancak farklı isimlere sahip iki ilişki tanımlamamız gerekir. inverse_of'u kullanarak Mongoid'in "isteklerin" "talepte bulunan" ve "ödevlerin" "çalışan" ile devam ettiğini bilmesini sağlar. Buradaki avantaj iki yönlüdür, ilişkimiz için anlamlı isimler kullanacağız ve birden fazla yolla ilgili iki modelimiz olabilir. Daha ayrıntılı bilgi için Mongoid Relations belgelerine bakın.

+2

Özel adla yalnızca tek bir ilişki varsa, özel adlarla iki ilişki olması gerektiğinde, '' '' 'ın' '' ın '' 'ın' 'ın' 'ihtiyacım yoktur. Ben şimdi ActiveRecord '' 'inverse_of''' farklı bir şey yapmak. – freemanoid

+2

Evet, özel bir adla tek bir ilişki için, yalnızca 'class_name' (hem Active Record hem de Mongoid'de) kullanmanız gerekir. 'Kullanıcılar' ve 'istekler' birden fazla yolla ilgiliyse, 'inverse_of', Mongoid'in (ve Aktif Kaydın) hangisini kastettiğinizi bilmesinin tek yoludur. – XanderStrike