0

Rails 3 と MySQL を 6 か月間使用していますが、「文字列」列を主キーとして実装する方法がわかりません。非整数フィールドをMySQLのテーブルの主キーにすることは許可されていないと思います。たとえば。customer_code を持つ顧客テーブルがある場合: 主キーとしての文字列 & customer_code フィールドを介して顧客テーブルを参照する製品テーブル、つまり製品テーブルの customer_code は外部キーです。Rails 3でこの関係を実装するにはどうすればよいですか? この関係を実装するための適切な方法を誰かに提案できますか?

4

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 に答える