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

  • ibebrent

    ibebrent

    23 Temmuz 2007
  • pucksz

    pucksz

    24 Mart 2006
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009