私は、RailsモデルのカスタムID(デフォルトの自動インクリメントの代わりに)を使用できるようにしたいと思います。基本的に、すべてのIDはiTunesのストアIDになります。これは長整数だけです。デフォルトの自動インクリメントIDをオフにして、それを設定する必要がありますか?これらのIDは他のモデルの外部キーとしても使用されます。このようなカスタム非自動インクリメントActiveRecord "id"カラムは可能ですか?
答えて
何か:
create_table :blah, {:id => false} do |t|
t.int :my_custom_int_id
end
execute "ALTER TABLE blah ADD PRIMARY KEY (my_custom_int_id);"
あなたがモデルを保存する前に、手動でIDを設定することができます。
a = Model.new
a.id = 8888 #from itunes
a.save
しかし、あなたの代わりに、このアプローチのitunes_id
と呼ばれる別のフィールドを検討すべきです。
私は現在、別の 'itunes_id'フィールドを使用しています。問題は、使用しているAPIがitunes IDを返すので、itunes_id - > my model idを追加検索するのが苦痛だということです。 – markquezada
私は本当に彼が何をすべきか言った方法が好きですが、あなたのアドバイスを提供しています。ベストプラクティス: – baash05
@daveatflowそれは個人的な意見ではなく、ベストプラクティスIMOです。 –
これは私が探していたようです、ありがとうございます。 – markquezada
また、 'set_primary_key:my_custom_int_id'(Rails 3)または' self.primary_key =:my_custom_int_id'(Rails 4)をモデルに追加する必要があります。 – gregoltsov