कई से कई संबंधों के घोंसले के रूप में आदेश संग्रहित करना

मेरे पास एक रेल 4 ऐप है, मॉडल <कोड> चुनौती और <कोड> चुनौती सूची के साथ। यह कई सारे रिश्ते हैं, इसलिए मेरे पास मॉडल ChallengeListsChallenge के साथ एक जॉइन टेबल भी है। मैंने इस अंतिम मॉडल को परिभाषित किया क्योंकि मैं अपनी चुनौती सूची को सूचियों का आदेश देने के लिए चाहता हूं, और इसलिए इसे act_as_list का शोषण करने के लिए उपयोग किया जाता है:

class ChallengeList < ActiveRecord::Base
  has_many :challenge_lists_challenges, :dependent => :destroy
  has_many :challenges, :through => :challenge_lists_challenges
  accepts_nested_attributes_for :challenges
end

class ChallengeListsChallenge < ActiveRecord::Base
  default_scope :order => 'position'
  belongs_to :challenge
  belongs_to :challenge_list
  acts_as_list :scope => :challenge_list
end

यह ठीक काम करता है।


मेरे एचटीएमएल में, मेरे पास एक ऐसा फॉर्म है जो उपयोगकर्ता को एक नया ChallengeList परिभाषित करने की अनुमति देता है। इसमें चुनौतियां के लिए घोंसला वाला रूप है:

= f.fields_for :challenges do |challenge_builder|
  .field
    = challenge_builder.text_field :description

लेकिन मैं उपयोगकर्ता को स्थिति बदलने में सक्षम होना चाहूंगा। तो मैंने सोचा कि मैं स्मार्ट होगा, स्थिति के लिए एक फ़ील्ड जोड़ें:

    = challenge_builder.text_field :position

बेशक, यह काम नहीं करता है, क्योंकि 'स्थिति' आइटम में शामिल होने पर सेट है, न कि चुनौती आइटम।

ChallengeListsChallenges के लिए घोंसला वाला फ़ॉर्म होने से मुझे स्थिति तक पहुंच मिल जाएगी, लेकिन यह अच्छा नहीं है क्योंकि:

  1. मुझे अपने ChallengeList id (जो कि दुर्बल नहीं है, लेकिन सुंदर नहीं है) के संदर्भ की आवश्यकता है
  2. मैं केवल मौजूदा <कोड> चुनौती आईडी
  3. का संदर्भ दे सकता हूं

तो मै क्या कर सकता हूँ?

0
मैं यही कर रहा हूँ! मैंने यह प्रश्न , जो एक ही चीज़ के बारे में दिखता है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं। तो मैं कोशिश कर रहा हूं, और अपने निष्कर्षों की रिपोर्ट करें।
जोड़ा लेखक Maarten, स्रोत
क्या आप चुनौती और चुनौती सूची को उसी रूप में बदलने की कोशिश कर रहे हैं? हाँ, यह थोड़ा बदसूरत हो जा रहा है। हो सकता है कि आप एक jQuery प्लगइन का उपयोग करके शो पेज पर रीडरिंग की अनुमति दें, और संपादन पृष्ठ पर कोई पुनरावृत्ति न करें।
जोड़ा लेखक Farley Knight, स्रोत

1 उत्तर

यह सवाल :

मॉडल निर्भरताओं को इस प्रकार सेट करें:

class ChallengeList < ActiveRecord::Base
  has_many :challenge_lists_challenges, :dependent => :destroy
  has_many :challenges, :through => :challenge_lists_challenges
  accepts_nested_attributes_for :challenge_lists
end

class ChallengeListsChallenge < ActiveRecord::Base
  default_scope :order => 'position'
  belongs_to :challenge
  belongs_to :challenge_list
  acts_as_list :scope => :challenge_list
  accepts_nested_attributes_for :challenges
end

और इस तरह एक दोगुना घोंसला वाला रूप:

= form_for @challenge_list do |f|
  = f.fields_for :challenge_lists_challenges do |links_form|
    .field
      = links_form.number_field :position
      %br/
    = links_form.fields_for :challenge do |challenge_form|
      .field
        = challenge_form.text_field :description
    = challenge_form.text_field :id

और यह काम करना चाहिए।

0
जोड़ा