القضبان: الرجوع إلى نموذج الكائن ينتمي إلى
-
19-09-2019 - |
سؤال
ربما هذا سؤال غبي، لكنني لا أستطيع أن أجد إجابة جيدة. أريد أن أعرف أفضل طريقة للإشارة إلى النموذج الذي ينتمي إليه كائن.
علي سبيل المثال:
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :users
end
لذلك، للحصول على مشاركات المستخدم، يمكنني استخدام User.Posts، ولكن للحصول على مستخدم المنشور، لا يمكنني القيام بالعكس: post.user
إذا قمت بإضافة طريقة "مستخدم" لنموذج المشاركة، فهي تعمل، لكنها لا يبدو أنها أفضل طريقة.
class Post < ActiveRecord::Base
belongs_to :users
def user
User.find(self.user_id)
end
end
إذا نظرت إلى هذه المدونة http://www.fortytwo.gr/blog/18/9-essential-tips. كمثال، يمكنك أن ترى أن المؤلف يستخدم POST.USER.USERNAME، والذي لا يعمل خارج الصندوق وكذلك: قم بتضمين => [: User]، والذي لا يعمل أيضا، حتى مع المستخدم "المستخدم" "طريقة في نموذج البريد.
أعلم أن هذا بدائي، حتى شكرا لصبرك. أريد فقط أن أعرف أفضل طريقة لإنجاز هذه العلاقة.
هدفي الرئيسي هو أن يكتب "finds" باستخدام متداخل يتضمن، الذي الرجوع إلى المستخدم مثل ذلك:
post = post.find.find (: الكل،: تشمل => [: المستخدم])
عندما أحاول ذلك، أحصل على "activerecord :: confignerror: جمعية المسمى" المستخدم "لم يتم العثور على" المستخدم "؛ ربما أخطأته؟"
شكرًا جزيلاً.
المحلول
أنا جديد بعض الشيء على القضبان، ولكن هذا يجب أن يعمل تلقائيا ...
آه - لقد سميت فئة الوالد في المنصب belongs_to :users
; ؛ ولكن لأنه ينتمي فقط إلى مستخدم واحد، تتوقع القضبان belongs_to :user
(أو بالطبع belongs_to :users, :class_name => "User"
).
إنه:
class Post < ActiveRecord::Base
belongs_to :user
end
يجب القيام بهذه المهمة.
نصائح أخرى
ينتمي إلى نموذج يجب أن يكون في المفرد. مثل
belongs_to :user