2011-03-29 9 views
9

मैं इस त्रुटि मिलती है "चेतावनी: बड़े पैमाने पर असाइन संरक्षित नहीं किया जा सकता गुण: races_attributes" , जब निम्न इस http://railscasts.com/episodes/196-nested-model-form-part-1 रेल 3. परचेतावनी: नहीं कर पा रहे जन-असाइन संरक्षित विशेषताओं

कहाँ दौड़ एक घटक हैं घटनाओं की। यह मेरा मॉडल/race.rb है:

class Race < ActiveRecord::Base 
belongs_to :event 

attr_accessible :name, :unit 
end 

यह मेरा मॉडल/event.rb है:

class Event < ActiveRecord::Base 
has_many :races, :dependent => :destroy 

accepts_nested_attributes_for :races 

attr_accessible :name, :date, :description, :location_name, :address_one, :address_two, :city, :state, :zip, :active, :races_attributes 
end 

किसी भी विचार?

उत्तर

10

attr_accessible निर्दिष्ट करता है कि उदाहरण के लिए save विधि का उपयोग करके आप गुणों को बड़े पैमाने पर असाइन नहीं कर सकते हैं। इसलिए, यदि आप attr_accessible के साथ परिभाषित नहीं की गई विशेषता को बदलते हैं, तो आपको एक चेतावनी मिलेगी क्योंकि यह वास्तव में डेटाबेस में सहेजी नहीं जाएगी।

+0

मैंने प्रत्येक संबंधित attr_accessib के रूप में सभी विशेषताओं को जोड़ा है ले – Hosemeyer

+0

ओह, मैं event_id को भूल गया। धत तेरे की! – Hosemeyer

19
attr_accessible का उपयोग करने से

छोटा, सुरक्षित whitelist_attributes का उपयोग करने से: attr_protected

बस संरक्षित विशेषताओं से संकेत मिलता है, और रेल का अनुमान लगा होगा अन्य सभी बड़े पैमाने पर सौंपा जा सकता है कि: हमेशा

class MyClass < ActiveRecord::Base 
    attr_protected :id 
end 

(मैं जिस तरह से मैं संरक्षित करना चाहता हूं उससे बड़े पैमाने पर असाइन करना चाहते हैं।)

+0

बस संदर्भ के लिए, whitelist_attributes को application.rb में सेट किया जा सकता है: 'config.active_record.whitelist_attributes = true' अगर आप एक त्वरित हैक करना चाहते हैं और व्यक्तिगत मॉडल को संशोधित नहीं करना चाहते हैं। बस लाइन पर टिप्पणी करें। – qix

संबंधित मुद्दे