El ile HABTM katılmak bir tablo için bir migrasyon oluşturmak gerekiyor mu? | Netgez.com
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

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Sarah's YouTube Channel

    Sarah's YouT

    27 Temmuz 2009