サブクラスを作成して更新したいが、作成した後でprimary_keyが失われ、更新が不可能になる。Rails ActiveRecordサブクラスが作成後に主キーを失う
マイ(簡体字)の設定は以下の通りです:
Rails 4.2.9
ruby-2.1.10
モデル:
class Contact < ActiveRecord::Base
attr_accessible :firstname,
:lastname
end
class SimpleContact < Contact
self.primary_key = 'id'
end
contacts
テーブル(STI)を共有する両モデル。
コントローラー:
module Public
class FilmEntriesController < PublicController
# ...
def create
logger.debug "SIM PK #{SimpleContact.primary_key}" # id
contact = SimpleContact.create()
logger.debug "SIM PK after create #{SimpleContact.primary_key}" # nil
contact.update_attributes({"firstname"=>"Moe", "lastname"=>"Test"})
end
end
contacts表は、この移行で作成されました:
class CreateContacts < ActiveRecord::Migration
def change
create_table :contacts do |t|
t.string :firstname # | kontakt_vorname | varchar(64)
t.string :lastname # | kontakt_nachname | varchar(64)
t.timestamps
end
end
end
完全なエラーMSGが、その後
ActiveRecord::StatementInvalid in Public::FilmEntriesController#create
Mysql2::Error: Unknown column 'contacts.' in 'where clause': UPDATE
`contacts` SET `firstname` = 'Moe', `lastname` = 'Test', `updated_at`
= '2017-09-07 11:09:39' WHERE `contacts`.`` = 21964
ある任意のヒントをありがとう!
「contacts」のデータベース移行を表示してください。 – mudasobwa
'primary_key'を' 'id" 'に設定するのはなぜですか?デフォルト値ではありませんか? – Stefan
@mudasobwa:私は質問への移行を追加しました –