2012-03-04 5 views
6

के साथ जेएसओएन "आईडी द्वारा ऑर्डर करें" मैं आईडी (बच्चे आईडी)रैबल

द्वारा जेसन आउटपुट ऑर्डर चाहता हूं, क्या मैं इस समस्या को हल कर सकता हूं?

इस

अपने प्रोजेक्ट में कुछ कोड

show.json.rabl (मैं Rabl इस्तेमाल किया)

object @book 
attributes :id , :name 

child :questions do 
    attributes :id , :name 
end 

books_controller.rb

def show 
    @book = Book.find(params[:id]) 
end 

क्षमा करें मेरी अंग्रेजी के लिए, धन्यवाद है।

उत्तर

4

यह अपने अनुप्रयोग और क्या आप पूरा करना चाहते हैं पर निर्भर करता है, लेकिन आप में एक default_scope निर्धारित कर सकते हैं Question मॉडल इस तरह:

class Question < ActiveRecord::Base 
    default_scope order('id ASC') 
end 

या आप Book मॉडल में एक default_scope निर्धारित कर सकते हैं:

class Book < ActiveRecord::Base 
    default_scope joins(:questions).order('questions.id ASC') 
end 

यदि आप उत्सुक questions लोड करना चाहते हैं, तो join के बजाय includes का उपयोग करें।

1

मुझे आरएबीएल नहीं पता, लेकिन मुझे लगता है कि आप सिर्फ प्रतीक के बजाय संग्रह में जा सकते हैं। दी, कि तुम :question अपने Book वर्ग पर एक has_many संबंध है, तो आप उस के लिए एक खोजक इस्तेमाल कर सकते हैं:

child @book.questions.order('id ASC') do 
    attributes :id , :name 
end 
+0

हां, प्रश्न मेरे बुक क्लास पर 0_पर एक है_मैनी संबंध है, धन्यवाद, मैं कोशिश करता हूं लेकिन अभी भी काम नहीं करता हूं। –

+0

इसका मतलब क्या है? परिणामी जेसन क्या है? – phoet

+0

बीटीडब्ल्यू, क्षमा न करें या अपने प्रश्नों के लिए धन्यवाद सामान लिखें। – phoet

0

मॉडल में आदेश करो और आदेश विधि

प्रश्न मॉडल

class Question < ActiveRecord::Base 
    # ... 
    scope :by_id, order('id ASC') 
    # ... 
end 

क्वेरी करने के लिए और फिर

class Book < ActiveRecord::Base 
    # ... 
    has_many :questions 
    # ... 
    def ordered_questions 
    questions.by_id 
    end 
    # ... 
end 

अंत में, अपने Rabl हैं बुक

में एक विधि है Rabl का उपयोग

object @book 
child :ordered_questions do 
    attributes :id, :name 
end 

https://github.com/nesquena/rabl/issues/387