0

我正在使用 drnic 的复合主键 gem,但遇到了问题:如果我想在测试中使用以下命令创建 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:错误:“course_iddaily_order_id”列中的空值违反非空约束:插入“course_orders”(“course_iddaily_order_id”、“course_id”、“ordered_at”、“finished”、“daily_order_id”)值( 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

我不知道这里出了什么问题,你能帮忙吗?

4

1 回答 1

0

我猜该create_table方法不需要数组作为:primary_key选项。我想你可以省略设置它。

于 2011-03-01T15:07:57.400 回答