• 0

كيف أفلتر حقول مترابطة على متحكم Controllers على Rails؟

على إطار العمل Rails لدي Models هما Article وَ Comment بعلاقة one-to-many.

الواجهة view:

<% @articles.each do |article| %>
  <% article.comments.each do |comment| %>
    some content
  <% end %>
<% end %>

جلب articles عن طريقة المتغير articles@ :

@articles = Article.order('created_at asc').last(4)

أريد عمل فلتر للتعليقات داخل الواجهة:

<% @articles.each do |article| %>
  <% article.comments.order('created_at asc').last(4).each do |comment| %>
    some content
  <% end %>
<% end %>

لكن لا أستطيع  عمل (4)order('created_at asc').last داخل الواجهة، فكيف أتمكن من فعل ذلك داخل Controller؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

داخل model عليك بإضافة العلاقة has_many والتي تربط جدول article  بجدول comments:

Class Article < ActiveRecord::Base
  has_many :comments, -> { order 'created_at' } do
    def recent
      limit(4)
    end
  end
end

لتتمكن من استعمال articles بالطريقة التالية:

@articles.each do |article| 
    article.comments.recent.each do |comment|
        stuff
    end
end

هذا مثال آخر، يتعلق بصورة'Picture'والتعليقات'comments' الخاصة بها:

Class Picture < ActiveRecord::Base
  has_many :comments, :order => 'id DESC' do
    def recent
      limit(10)
    end
  end
end

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن