【Agile】Ruby on rails相談所 part2【DRY】 at PHP
【Agile】Ruby on rails相談所 part2【DRY】 - 暇つぶし2ch448: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



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch