没有主键的ActiveRecord模型

Kyl*_*cot 12 ruby ruby-on-rails ruby-on-rails-4

我有一个GPA没有主键的ActiveRecord模型:

class GPA < ActiveRecord::Base

end
Run Code Online (Sandbox Code Playgroud)

当我试着打电话给GPA.first.to_json我时TypeError: false is not a symbol.我猜这是由于ActiveRecord尝试查找主键.没有主键实现模型的正确方法是什么?

在此输入图像描述

And*_*ing 17

通常,有一些列或列的组合一起形成主键.当你说你的桌子没有主键时你的意思是它没有一个id字段吗?

是否有另一列是唯一/自然键?如果是这样,你可以做到:

class GPA < ActiveRecord::Base
  set_primary_key :strm    # eg column strm is a unique/natural key
end
Run Code Online (Sandbox Code Playgroud)

您还可以将复合键与复合键gem一起使用,如下所示:

class GPA < ActiveRecord::Base
  set_primary_keys :student_id, :strm
end
Run Code Online (Sandbox Code Playgroud)


Ism*_*reu 2

您的迁移或架构需要类似的东西

create_table :gpas, :id => false do |t|
  t.int :strm
  t.string :gpa
  t.string :acad_career
  t.int :student_id
end
Run Code Online (Sandbox Code Playgroud)