المستخدم has_many: المستخدمين،: من خلال =>: الأصدقاء - كيف؟
-
18-09-2019 - |
سؤال
هذا هو رمزي:
class Friend < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end
class User < ActiveRecord::Base
#...
has_many :friends
has_many :users, :through => :friends
#...
end
عندما أبدأ الآن بإضافة المستخدمين عن طريق ...
user.users << user2
user.save
تم شغل User_ID من الصديق فقط، Friend_ID هو NULL NULL.
أي مساعدة؟
لك، جيرنر.
المحلول
تحتاج إلى إضافة :source
سمة الخاص بك has_many through
منظمة.
class User < ActiveRecord::Base
has_many :friends
has_many :users, :source => :friend, :through => :friends
end
الآن سوف تعمل المكالمات التالية.
u1.users << u2
u.friends.last
# will print #<Friend id: 1, user_id: 1, friend_id: 4>
ملاحظات:
- القضبان السيارات تنقذ الجمعيات. تحتاج إلى الاتصال
save
فقط إذا كان نموذج المستخدم جديدا. - ربما يجب عليك إعادة تسمية الارتباط إلى شيء أكثر صراحة. على سبيل المثال:
friend_users
إلخ.
نصائح أخرى
يحاول: Railscasts - الجمعيات المرجانية ذاتية. وبعد عموما لديه دروس جيدة جدا على جميع الموضوعات المدرجة.
أعتقد أنك بحاجة إلى حذف ينتمي: المستخدم في نموذج صديقك
لا تنتمي إلى StackOverflow