2012-04-30 23 views
5

Tengo dos modelos: Mostrar y Repartir.Nombre de la columna vacía al destruir el objeto

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

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

Cuando intento de destruir Mostrar consigo este error:

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

¿Por qué el nombre de la columna vacía? En 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 

Clave externa añadido a la base de datos

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

P. S. Resolví este problema agregando la clave principal a la tabla de ofertas, pero realmente no la necesito allí. Entonces la pregunta sigue siendo real. ¿Puedo usar la dependencia con modelos sin una clave principal de identificación?

Respuesta

3

Según compositekeys carriles no son compatibles teclas primarias compuestas (ese es su caso). Entonces, una de las soluciones es usar has_and_belongs_to_many ya que su tabla parece una tabla de muchos a muchos.

La otra solución es utilizar la gema que se encuentra en el enlace de arriba.

Cuestiones relacionadas