كيفية الوصول إلى ': HAS_MANY: على الرغم من "انضم إلى بيانات الجدول عند استخدام TO_JSON؟

StackOverflow https://stackoverflow.com/questions/3433631

سؤال

لدي ثلاثة نماذج (مبسطة هنا):

class Child < ActiveRecord::Base
  has_many    :childviews, :dependent => :nullify
  has_many    :observations, :through => :childviews  
end
class Childview < ActiveRecord::Base
  belongs_to  :observation
  belongs_to  :child
end
class Observation < ActiveRecord::Base
  has_many    :childviews, :dependent => :nullify
  has_many    :children, :through => :childviews
end

أنا أرسل هذا إلى بعض JavaScript باستخدام طريقة To_json مثل هذا:

render :layout => false , :json => @child.to_json(
  :include => {
    :observations => {
      :include => :photos, 
      :methods => [:key, :title, :subtitle]
    }
  },
  :except => [:password]
)

هذا يعمل تماما. يتم استرداد الملاحظات بشكل جيد "من خلال" جدول الانضمام (childviews).

لكن, ، أريد أيضًا الحصول على البيانات التي تقع في طاولة JOONDVIES ؛ على وجه التحديد قيمة "الاحتياجات _edit".

لا يمكنني معرفة كيفية الحصول على هذه البيانات في مكالمة TO_JSON.

هل يستطيع أي أحد مساعدتي؟ شكرا كثيرا مسبقا.

القرآن

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

المحلول

لست متأكدا ، ولكن لا ينبغي لهذا العمل؟

@child.to_json(
  :include => {
    :observations => {
      :include => :photos, 
      :methods => [:key, :title, :subtitle]
    },
    :childviews => { :only => :needs_edit }
  }, 
  :except => [:password]
)

تحرير: قد ينجح هذا أيضًا ، لأن childviews تنتمي_ إلى الإفراط في الإفراط:

@child.to_json(
  :include => {
    :observations => {
      :include => { :photos, :childviews => { :only => :needs_edit } } 
      :methods => [:key, :title, :subtitle]
    }
  }, 
  :except => [:password]
)

نصائح أخرى

بفضل موسيقى الروك للمؤشرات - أنا الآن يعمل!

هذا الرمز:

@child.to_json(:include => 
  {
    :observations => {
      :include => {
        :photos => {},
        :childviews => {:only => :needs_edit}
      }, 
      :methods => [:S3_key, :title, :subtitle]
    }     
  },
  :except => [:password]
)

يعطيني هذا الإخراج (اختصار من أجل الوضوح):

{
    "child":
    {
        "foo":"bar",
        "observations":
        [
            {
                "foo2":"bar2",
                "photos":
                [
                    {
                        "foo3":"bar3",
                    }
                ],
                "childviews":
                [
                    {
                        "needs_edit":true
                    }
                ]
            }
        ]
    }
}

شكرا لك روك! كان ذلك يفعل رأسي.

:)

القرآن

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