Temel olarak kendi ilişkilendirme türlerini tanımlamak için ortak bir yaklaşım olup olmadığını bilmek isterim. Bazı ayrıntılar:özel raylar has_many ilişkisi (pg dizisi aracılığıyla)
Bir PG dizi sütunu user_ids
olan bir modelim var conversations
. select conversations.* from conversations where USER_ID = ANY(conversations.user_ids)
finder_sql
yana ve 's arkadaş şimdi artık yok, gerçekten bu sözde has_many ilişki uygulamak için en iyi yol olacağını bilmek istiyorum: Yani, kullanıcı konuşmaları almak için hemen gitmem gerek? Böylece temelde ActiveRecord::Associations::CollectionAssociation
kendi uygulanması düşünüyorum ve bazı iyi referanslar var olup olmadığını bilmek istiyorum yoksa tavsiye eğer nereden başlayacağınızı
def conversations
Conversation.where("#{id} = ANY (conversations.users)")
end
:
anda ben gibi yöntemleri kullanmak
Conversation.user.select{ |conversation| conversation.user_ids.include?(params[:id])
Con:
Şema üzerinde kontrolünüz var mı? Yabancı anahtarlar tutmak için bir dizi kullanmak, çünkü şimdi neden olan sıkıntılardan dolayı kötü bir uygulama değil, çünkü soruyorum. Bir dizi kullanarak düşünmeniz gereken _only_ zamanı, her zaman veritabanı tarafından hiçbir anlam ifade etmeyen bölünemez bir şey olarak ele alınabileceği zamandır. –
haklı olarak, bu yaklaşımla sadece eğitim amaçlı olarak gitmeye karar verdim. Ayrıca, dizi performansıyla kesinlikle hayrete düştüm. Beni ikna eden bir başka şey de şuydu: http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/, bu da bana göre –
'dan beri kötü bir fikir değil. ARRAY ile gitmeye karar verebilirsiniz, belki SQL Görünümleri ile de gidebilirsiniz? https://github.com/thoughtbot/scenic Ve temelde dizininizi şunun gibi bir şeye benzeyen başka bir tablo yaratın: (conversation_id, user_id) (çok fazla), böylece normal kullanabilirsiniz birçok ilişki vardır. –