2012-04-30 13 views
5

मेरे पास दो मॉडल हैं: दिखाएँ और सौदा करें।ऑब्जेक्ट को नष्ट करते समय खाली कॉलम नाम

class Show < ActiveRecord::Base 
    has_many :deals, :inverse_of => :show, :dependent => :destroy 
    ... 

class Deal < ActiveRecord::Base 
    belongs_to :show, :inverse_of => :deals 
    ... 

जब मैं शो को नष्ट करने की मैं इस त्रुटि मिलती है कोशिश:

PG::Error: ERROR: zero-length delimited identifier at or near """" 
LINE 1: DELETE FROM "deals" WHERE "deals"."" = $1 

क्यों स्तंभ नाम खाली है? schema.rb में:

create_table "deals", :id => false, :force => true do |t| 
    t.integer "discount_id" 
    t.integer "show_id" 
end 

create_table "shows", :force => true do |t| 
    t.integer "movie_id" 
    t.integer "hall_id" 
    t.datetime "show_time" 
    t.integer "city_id" 
    t.integer "price" 
end 

विदेशी कुंजी डेटाबेस

CONSTRAINT fk_deals_shows FOREIGN KEY (show_id) 
    REFERENCES shows (id) MATCH SIMPLE 
    ON UPDATE NO ACTION ON DELETE NO ACTION 

पी.एस. को जोड़ा गया मैंने सौदे तालिका में प्राथमिक कुंजी जोड़कर इस समस्या का समाधान किया, लेकिन मुझे वास्तव में इसकी आवश्यकता नहीं है। तो सवाल अभी भी वास्तविक है। क्या मैं आईडी प्राथमिक कुंजी के बिना मॉडल के साथ निर्भरता का उपयोग कर सकता हूं?

belongs_to :show, :inverse_of => :deal 

मुझे आशा है कि यह मदद करता है

उत्तर

3

compositekeys रेल का समर्थन नहीं करते के अनुसार:

0

मैं यकीन है कि यह आपकी समस्या का समाधान होता लेकिन https://github.com/rails/rails/commit/ccea98389abbf150b886c9f964b1def47f00f237 के अनुसार आप विलक्षण मूल्य के साथ :inverse_of परम निर्धारित करने की आवश्यकता ध्यान दें समग्र प्राथमिक कुंजी (वह आपका मामला है)। तो समाधानों में से एक has_and_belongs_to_many का उपयोग करना है क्योंकि आपकी तालिका केवल कई से अधिक टेबल की तरह दिखती है।

दूसरा समाधान उपरोक्त लिंक पर स्थित मणि का उपयोग करना है।

+0

आपके उदाहरण में इकाइयों के बीच संबंध एक-से-एक है, लेकिन मेरे मामले में यह एक से कई है, इसलिए 'सौदों' सही है – Donotello

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