Rails 3 と MySQL を 6 か月間使用していますが、「文字列」列を主キーとして実装する方法がわかりません。非整数フィールドをMySQLのテーブルの主キーにすることは許可されていないと思います。たとえば。customer_code を持つ顧客テーブルがある場合: 主キーとしての文字列 & customer_code フィールドを介して顧客テーブルを参照する製品テーブル、つまり製品テーブルの customer_code は外部キーです。Rails 3でこの関係を実装するにはどうすればよいですか? この関係を実装するための適切な方法を誰かに提案できますか?
3 に答える
0
私は物事をシンプルに保ち、標準のレール規則に従います-キーに自動IDフィールドを使用します。
コードを取得するためにユーザーオブジェクトを検索する必要をなくすためにcustomers_codeをproductsテーブルに含める場合は、製品を保存するときにこれも保存します。
于 2011-08-10T11:29:39.747 に答える
0
class Product < ActiveRecord::Base
belongs_to :customer, :foreign_key => :customer_code, :primary_key => :customer_code
end
于 2011-08-10T11:46:43.077 に答える
0
Costumer
と の 2 つのモデルがあると思いますProducts
。では、このソリューションはどうでしょうか。
class Costumer < AR::Base
set_primary_key 'code'
has_many :products, :foreign_key => :costumer_code
validates :code, :presence => true
end
class Product < AR::Base
belongs_to :costumer, :foreign_key => :costumer_code
end
問題は、デフォルトの主キーのように自動インクリメントではないため、作成時に衣装コードが適切に設定されていることを確認する必要があることですid
。コールバックbefore_create
が役立ちます。
于 2011-08-10T11:34:31.330 に答える