HABTM 조인 테이블에 대한 마이그레이션을 수동으로 생성해야합니까?
HATBM이 올바르게 작동하도록 지금 고군분투하고 있습니다. 나는 구타를 당했다 : 기사와 태그. HABTM은 다 대다 관계이기 때문에 여기에서 사용해야한다고 생각합니다. 그러나 수동으로 조인 테이블 (이 경우에는 articles_tags)을 만들어야하는지 모르겠습니다.
내 코드는 현재 다음과 같습니다.
class Article < ActiveRecord::Base
has_and_belongs_to_many :tags
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :articles
end
마이그레이션을 실행할 때 세 번째 테이블이 생성되지 않습니다. 또한 세 번째 테이블에는 도메인 로직이없고 블라인드 할당 만 포함되어 있다는 점을 추가하고 싶습니다.
Rails 2.2.2를 사용하고 있습니다.
테이블 중 하나의 마이그레이션에서이 작업을 수행하거나 해당 마이그레이션이 실행 된 경우 별도의 마이그레이션에서 수행해야합니다.
create_table :articles_tags, :id => false do |t|
t.references :article, :tag
end
add_index :articles_tags, [:article_id, :tag_id]
그러면 테이블이 생성되고 :id => false
Rails에이 테이블에 id 필드를 추가하지 않도록 지시합니다. 이 조인 테이블에 대한 조회 속도를 높일 수있는 인덱스도 있습니다.
이를 위해 모델 (ArticlesTag)을 생성하고 다음을 수행 할 수도 있습니다.
# 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
그런 다음 script/generate model articles_tag
호출 에서 생성 된 마이그레이션에서 테이블을 만듭니다 .
이것은 API에서 다룹니다.
마이그레이션에 색인을 추가 할 수도 있습니다.
add_index "articles_tags", "article_id"
add_index "articles_tags", "tag_id"
그러나 태그 기능을 원한다면 acts_as_taggable_on rails 플러그인을 권장합니다.
http://www.intridea.com/tag/acts_as_taggable_on http://github.com/mbleigh/acts-as-taggable-on/
나는 그것을 프로젝트에서 사용했고 구현하기가 매우 쉬웠다.
태그 지정을위한 조인 테이블의 문제 중 하나는 태그를 지정할 수있는 각 콘텐츠 유형 (예 : comments_tags, posts_tags, images_tags 등)에 대해 조인 테이블을 쉽게 만들 수 있다는 것입니다. 이 플러그인은 구분자를 포함하는 태그 지정 테이블을 사용하여 각 유형에 대한 특정 조인 테이블없이 콘텐츠 유형을 결정합니다.
이 Qeuestion (1st answear)과 결합 하여 일반적인 사용자 HABTM 역할 관계를 설정하는 방법 과 여기에서 1st answear는 원숭이도 이해해야합니다. 나는 RoR에서 처음이고 매력처럼 작동하고 있습니다.
'program story' 카테고리의 다른 글
로컬 mongo db를 시작 / 실행할 수 없습니다. (0) | 2020.10.14 |
---|---|
Apache Spark : Python 3에서 pyspark를 사용하는 방법 (0) | 2020.10.14 |
git 별칭 안에 bash 스크립트를 직접 포함하는 방법 (0) | 2020.10.14 |
jQuery 대화 상자 버튼에 CSS 적용 (0) | 2020.10.14 |
ui-sref Angularjs의 값을 동적으로 설정 (0) | 2020.10.14 |