yükseltir ayarlamak için bu kadar
http://ruby-journal.com/how-to-override-default-primary-key-id-in-rails/
gibi, örneğin :id, :string
için, özel kimliği alanını kullanmak
Karşı karşıya kaldığım iki sorun var.
@primary_key {:id, :id, autogenerate: false}
ait
- Hem ve
fields :id
fıkra şema tanımı olamaz.
Bu çözümdür
defmodule MyApp.Item do
use MyApp.Web, :model
@primary_key {:id, :string, []}
schema "items" do
# field :id, :string <- no need!
- otomatik oluşturulan id önlemek için, sadece bu gibi göç dosyasını
düzenlemek zorunda
defmodule MyApp.Repo.Migrations.CreateItem do
use Ecto.Migration
def change do
create table(:items, primary_key: false) do
add :id, :string, primary_key: true
Son olarak, mix ecto.migrate
'u çalıştırabilir ve tablo tanımlarını alabilirim
mysql> SHOW CREATE TABLE items;
| items | CREATE TABLE `builds` (
`id` varchar(255) NOT NULL,
Resmi belgede aşağıda siyon kesinlikle ilk, priv/repo/göçler/20150908003815_create_player.exs göç bir göz atalım o http://www.phoenixframework.org/docs/ecto-custom-primary-keys
hakkında diyor. İki şey yapmamız gerekecek. Birincisi ikinci bir argümana geçmek - primary_key: table/2 işlevine false, böylece bir primary_key oluşturmayacaktır. Daha sonra primary_key'i geçmemiz gerekecek: true_diske bunun yerine birincil_key olacağını belirtmek için ad/add işlevine.
Ama başında, sütunun
id
istemiyoruz, sadece göç
create table(:items, primary_key: false)
ve yine de teşekkürler
görünüyor
kendinden çözüldü rağmen, düzenleme şema yapmak 'oluşturmak tablo (: items, primary_key: false) taşıma dosyasında yapılıyor ...? http://www.phoenixframework.org/docs/ecto-custom-primary-keys – otiai10