SORU
19 ŞUBAT 2009, PERŞEMBE


El ile HABTM katılmak bir tablo için bir migrasyon oluşturmak gerekiyor mu?

Şimdi HATBM düzgün çalışma almak için mücadele ediyorum. Dövülmüş bir scanario var: makaleler ve etiketler. , HABTM çok-çok ilişkisi olduğu için burada kullanılması gerektiğini tahmin ediyorum. Eğer elle bir birleşim tablosu (bu durumda articles_tags) oluşturmak olursam eğer bilmiyorum.

Benim kod aşağıdaki gibi şu anda

class Article < ActiveRecord::Base
  has_and_belongs_to_many :tags  
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :articles
end

Göçler mı 3 tablo oluşturulur. Ayrıca, benim üçüncü tablo herhangi bir etki alanı mantığı, kör atama sadece ayı değil eklemek istiyorum.

Raylar 2.2.2 kullanıyorum

CEVAP
19 ŞUBAT 2009, PERŞEMBE


Tablolardan birini bir geçiş olarak bunu yapmak, ya da eğer bu göçler koştu ise ayrı bir geçiş gerekir:

create_table :articles_tags, :id => false do |t|
  t.references :article, :tag
end

add_index :articles_tags, [:article_id, :tag_id]

Bu tablo ve bu tablo için bir kimlik alanı eklemek için Raylar :id => false söyler oluşturur. Bu tablo katılmak için aramaları hızlandıracak olan da dizin yok.

Ayrıca (ArticlesTag) ve bunu yapmak için bir model oluşturur:

# article.rb
has_many :articles_tags
has_many :tags, :through => :articles_tags

# tag.rb
has_many :articles_tags
has_many :articles, :through => :articles_tags

# article_tag.rb
belongs_to :tag
belongs_to :article

Ve sonra geçiş script/generate model articles_tag çağrı oluşturulan tabloyu oluşturun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • ShoSho

    ShoSho

    20 Ocak 2010