【Agile】Ruby on rai ..
[2ch|▼Menu]
448:nobodyさん
06/09/18 15:33:11
なんかいろいろ調べたけど、問題点は2つあるみたいです。
1. プライマリキーがid以外の場合は set_primary_key 'xxx' 以外に xxx_before_type_cast の定義が必要
2. プライマリキーはauto_incrementまたはserialのように自動設定されなければならない

>>419だとプライマリキーの名前がcodeであり、かつauto_incrementがないので、両方にひっかかってました。名前だけの問題だと思ってたけどそうじゃなさそうです。
今のテーブルだと、(いいか悪いかは別にして)プライマリキーの値はユーザが入力することになってるんですけど、ActiveRecordではそういうのは想定してないっぽい。

試行錯誤して、モデルにいろいろ追加していちおう動くようにはなったんですけど、正しい保証はまったくないです。
class Account < ActiveRecord::Base
 ## 1. プライマリキーをidではない名前にする
 set_primary_key 'code'
 def code_before_type_cast
  read_attribute(:code) # or code
 end
 ## 2. ユーザ入力値をプライマリキー値に設定する
 def initialize(attributes=nil)
  super
  self.id = attributes[:code] if attributes
 end
# def before_create
#  self.id = code
# end
end



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4328日前に更新/225 KB
担当:undef