سؤال

وعندي استفسار SQL التالية:

وarticles.name SELECT، articles.price، users.zipcode من المواد INNER JOIN المستخدمين ON users.id = articles.user_id WHERE ناقلاتto_tsquery ( 'الجريمة') ORDER BY ASC articles.price

وأنا أود أن أكتبها داخل طريقة الاكتشاف من أكتيفيريكورد الدرجة اسمه المادتين (المقالات belongs_to المستخدم). في الأساس أريد بحث عن مقالات و الوصول إلى ممتلكاتهم الرمز البريدي من المستخدم (المستخدم has_many المقالات)

وكتبت النسخة التالية، ولكنني لست متأكدا من أن لها العمل لأنه في استجابة أنا لا أميل الحصول على أي معلومات عن الرمز البريدي للمستخدم.

وو= Article.find (: قبل كل شيء،: ظروف => "ناقلاتto_tsquery ( 'الجريمة')" ،: ينضم =>: سهولة،: النظام =>: السعر،: تتضمن =>: المستخدم)

ولكن ليس لدي أي فكرة عن كيفية الوصول إلى المعلومات الرمز البريدي. كيف يمكنني الوصول إلى هذه المعلومات؟ هذا هو النهج الصحيح؟

والتحيات،

وفيكتور

هل كانت مفيدة؟

المحلول

إذا كنت قد يقترن Articles وUsers وكأنك تقول أعلاه، وهذا ينبغي أن يكون من السهل جدا:

@articles = Article.find(:all, :conditions => "…", :include => :user)

وبعد ذلك، من وجهة نظرك، يمكنك القيام به:

<ul>
<% for each article in @articles do %>
  <li><%= article.user.zipcode %></li>
</ul>
<% end %>

ويعمل هذا لأن القضبان يخلق الملكية للالكائن الأصل (User) في نموذج (Article) - يمكنك قراءة المزيد حول ذلك <وأ href = "http://api.rubyonrails.org/classes/ActiveRecord/Associations /ClassMethods.html "يختلط =" نوفولو noreferrer "> في API مستندات . حتى هذا يعمل بدون "تشمل" مفتاح أعلاه، ولكنه ترك ذلك يعني استعلام قاعدة بيانات في كل خطوة من الحلقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top