2015-07-05 2 views
0

Я довольно новичок в Rails. Я сделал следующий переход:Rails 4 has_one отношение

def change 
    add_reference :orders, :table, index: true 
    add_foreign_key :orders, :tables 
end 

И у меня есть следующие модели:

class Table < ActiveRecord::Base 
belongs_to :user 

belongs_to :order 
end 

class Order < ActiveRecord::Base 
belongs_to :user 

has_one :table 
end 

В консоли у меня есть:

o = Order.new 
o.name = "pippo" 
o.user_id = 4 
o.table_id=Table.first.id 
o.save 
o.table 

, и я получаю эту ошибку:

PG::UndefinedColumn: ERROR: column tables.order_id does not exist 
LINE 1: SELECT "tables".* FROM "tables" WHERE "tables"."order_id" =... 

Любые идеи?

ответ

1

Если у заказа есть одна таблица, то таблице нужен внешний ключ заказа. Таким образом, вы фактически запускаете противоположные миграции. Таблица должна иметь внешний ключ order_id.

def change 
    add_reference :tables, :order, index: true 
    add_foreign_key :tables, :orders 
end 

Затем создайте запись в таблице с помощью order_id и вызовите таблицу «Порядок».

+1

Я вот-вот напишу это :) – Pavan

+0

Если этот ответ правильный, вы можете принять это как правильный ответ. – Rubyrider

+1

Спасибо @Rubyrider, я собираюсь принять ваш ответ за пять минут – Alfredo

Смежные вопросы