Я использую составной драгоценный камень первичных ключей от drnic, и у меня есть проблема с этим:
Если я хочу создать CourseOrder (с cpk) с помощью следующей команды в моих тестах: course_order = CourseOrder.new(:daily_order => daily_orders(:daily_order_one_of_today_for_hans),:course => courses(:non_veg_2), :finished => false, :ordered_at => Time.now)
Я получу следующую ошибку:
ActiveRecord :: StatementInvalid: PGError: ERROR: нулевое значение в столбце "course_iddaily_order_id" нарушает ненулевое ограничение
: INSERT INTO "course_orders" ("course_iddaily_order_id", "course_id", "orders_at", "done", "daily_order_id") VALUES (NULL, 489519433, '2011-03-01 10: 19: 27.169397', 'f', 594369222) ВОЗВРАЩЕНИЕ "course_iddaily_order_id"
Я думаю, что есть course_iddaily_order_id не так, не так ли?
Мой файл миграции выглядит так:
class AddCourseOrder < ActiveRecord::Migration
def self.up
create_table :course_orders, :primary_key => [:course_id, :daily_order_id] do |table|
table.integer :course_id
table.integer :daily_order_id
table.datetime :ordered_at, :null => false
table.boolean :finished, :default => false, :null => false
end
end
def self.down
drop_table :course_orders
end
end
Полученная часть схемы выглядит следующим образом:
create_table "course_orders", :primary_key => "course_iddaily_order_id", :force => true do |t|
t.integer "course_id", :null => false
t.integer "daily_order_id", :null => false
t.datetime "ordered_at", :null => false
t.boolean "finished", :default => false, :null => false
end
Моя модель выглядит так:
class CourseOrder < ActiveRecord::Base
set_primary_keys :course_id, :daily_order_id
belongs_to :course
belongs_to :daily_order
end
Я не знаю, что здесь не так, вы можете помочь?