اذهب إلى المحتوى

السؤال

نشر

على إطار العمل Rails أريد استخراج حسابات جميع المستخدمين باستثناء المستخدم الحالي، حتى أظهرها له - ومن المنطقي عدم ظهور حسابه بينها-، وهذه الدالة نتيجة محاولتي لفعل ذلك:

# helper function
def method_name
  Profile.all.select do |m|
   n = m.country.class == String # Because most countries will be nil. A shorter way to not include nil profiles?
   return n.reject! {|x| x == current_user.profile.user_id }
  end
end

ومن المفروض أن تُرجع لي جميع المستخدمين باستثناء حسابي، لكن أفاجأ بالخطأ التالي:

undefined method `reject!' for false:FalseClass

ما العمل؟ وكيف أتجاوز هذا الخطأ وأُصلحه؟

Recommended Posts

  • 0
نشر

الخطأ الأساسي في n = m.country.class == String، وذلك لجعل قيمة n  تستقبل قيمة true أو false لأنك حاولت استعمال { reject! {|x| x == current_user.profile.user_id } والتي بالأساس تعيد قيمة متغير boolean، لذا الصحيح هو :

def method_name
  Profile.all.select do |p|
    p.country.present? && p != current_user.profile
  end
end

أو بطريقة أخرى مختصرة :

def method_name
  Profile.where.not(user_id: current_user.id).where.not(country: nil)
end

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...