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
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.
Otomatik oluşturmak SQL Server tablo i...
CSS3'border-radius özelliği ve sı...
Nasıl saklı satır içeren varolan bir S...
Bu oluşturmak için nasıl "tablo&q...
Nasıl bir paylaşılan tablo yapıları il...