2012-07-25 15 views
8

असल में मैं एक मॉडल के लिए एक परियोजना पर हूं-> कई। मुझे वर्तमान उपयोगकर्ता के साथ सभी क्रेडिट/डिवाइस/प्रोजेक्ट (और मुझे लगता है कि केवल दो कॉलम (आईडी & स्कोर) के साथ टेबल क्रेडिट रखना बेकार है, इसलिए मैं इस तालिका को जॉइन टेबल में विलय करता हूं)।रेल: ढेर स्तर बहुत गहरा

मैं इस त्रुटि मिलती है:

SystemStackError in Users#show 

Showing app/views/shared/_credit.html.erb where line # raised: 

stack level too deep 

और दो मॉडल:

class **Credit** < ActiveRecord::Base 
    attr_accessible :created_at, :credit_id, :device_id, :project_id, :score, :user_id 

belongs_to :device 
belongs_to :user 
belongs_to :project 
belongs_to :score 

end 

class **User** < ActiveRecord::Base 

has_many :credit 
has_many :credit, :through => :credit, foreign_key: "user_id", dependent: :destroy 
end 

धन्यवाद!

बेस्ट। एक साधारण पुनरावर्ती कॉल करने के लिए गहरी अंक के

+1

क्या आप 'has_and_belongs_to_many' रिश्ते के बारे में जानते हैं? Http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association जांचें। साथ ही, जब आप 'has_many' कहते हैं, तो इसे केवल' क्रेडिट' के बजाय 'क्रेडिट' होना चाहिए। –

+0

आपने 2 'has_many: क्रेडिट' परिभाषित किया है; मुझे लगता है कि दूसरा ''परियोजना' होना चाहिए – Baldrick

उत्तर

15

ढेर स्तर, और मैं तुम्हें मिल कहूँगा कि

has_many :credit, :through => :credit, 

जो स्पष्ट रूप से किसी प्रकार का एक चक्र का परिचय के साथ।

0

इस समस्या को हल करने के लिए आपको नवीनतम संस्करण में रेल संस्करण को अपग्रेड करना होगा।

दूसरा विकल्प रूबी संस्करण को पुराने संस्करण में डाउनग्रेड करना है।

आपको यह समस्या मिल रही है क्योंकि आप जिस रेल संस्करण का उपयोग कर रहे हैं वह रूबी संस्करण के साथ संगत नहीं है।

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