2010-11-20 17 views
5

Rails modeli için özel bir kimlik (otomatik artışlı varsayılan değerler yerine) kullanabilmek isterim. Temel olarak, tüm kimlikler sadece uzun tamsayılar olan iTunes mağazası kimlikleri olacaktır. Varsayılan otomatik arttırma kimliklerini kapatmak mümkün mü ve ayarlanması gerekiyor mu? Bu kimlikler diğer modellerde de yabancı anahtar olarak kullanılacaktır. BöyleÖzel otomatik artışlı ActiveRecord "id" sütunu mümkün mü?

cevap

6

şey: Eğer modeli kaydetmeden önce

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);" 
+0

Aradığım gibi görünüyor, teşekkürler. – markquezada

+1

Ayrıca, modelinize 'set_primary_key: my_custom_int_id' (Rails 3) veya' self.primary_key =: my_custom_int_id' (Rails 4) eklemeniz gerekecektir. – gregoltsov

2

el kimliği ayarlayabilirsiniz.

a = Model.new 
a.id = 8888 #from itunes 
a.save 

Ancak, bu yaklaşım yerine itunes_id denilen ayrı bir alan düşünmelisiniz.

+0

Şu anda açıkladığınız gibi ayrı bir "itunes_id" alanı kullanıyorum. Sorun şu ki, kullanıyorum API itunes itds ids bu yüzden itunes_id için ekstra bir arama yapmak için bir acı -> benim model kimliği her zaman. – markquezada

+1

Ne yapması gerektiğini söylediğini gerçekten çok beğendim ama aynı zamanda tavsiyeni de verdim .. en iyi uygulama ... :) – baash05

+0

@daveatflow Bu kişisel bir fikir değil, en iyi IMO uygulamasıdır. –

İlgili konular