سؤال

ربما هذا سؤال غبي، لكنني لا أستطيع أن أجد إجابة جيدة. أريد أن أعرف أفضل طريقة للإشارة إلى النموذج الذي ينتمي إليه كائن.

علي سبيل المثال:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top