2012-06-14 5 views
1

여러 프로필 이미지를 여러 광고와 연결할 수있는 앱을 만들려고합니다.프로필을 여러 배너와 연결하는 가장 좋은 방법

광고에 여러 개의 프로필이 있고 프로필이 여러 개의 광고에 속하기를 원하기 때문에 이것이 has_and_belongs_to_many 연결이 될 것으로 저는 믿습니다. 그러나 나는 이것이 데이터베이스 테이블에서 어떻게 작동하는지 약간 혼란 스럽다.

광고 테이블에 행이 하나 인 광고의 경우 내 프로필 테이블에 저장된 여러 개의 프로필 이미지를 단일 profile_id 셀에 어떻게 연결합니까? 연결된 모델을 처리하기 위해 별도의 세 번째 모델 및 데이터베이스 테이블을 설정해야합니까?

또한 성공적으로 일을 HABTM 협회를 얻기 위해 중첩 된 자원을 설정하는 것이 필수적인지 혼란 스러워요 - 내가 그들을 위하여 구분이 순간 :

기본적인 질문에 대한
resources :ads 
resources :profiles 

미안하지만 난 할 수 내 문제를 해결하는 데 도움이되는 정보를 찾지 못했고 HABTM 협회의 가이드가 매우 짧습니다.

미리 도움을 주셔서 감사합니다. :)

답변

1

"작동하도록"중첩 된 리소스가 필요하지 않습니다. ads_profiles라는 이름으로 모델을 서로 연결하는 다른 테이블이 필요합니다 (규칙에 따라 복수형 및 사전 순). 표에는 두 개의 열 (ad_id 및 profile_id)이 있습니다. 광고 개체를 사용하면 프로필 (ad.profiles)을 가져올 수 있고 프로필을 사용하면 광고 (profile.ads)를 가져올 수 있습니다.

이것은 당신이 시작하는 것입니다 : http://guides.rubyonrails.org/association_basics.html

~ 찰스 ~

1

HABTM 연결을 만들 때 수동으로 연결 테이블을 만들어야합니다. 귀하의 경우 ads_profiles입니다.

rails g migration create_table_ads_profiles 

이 테이블에는 이제 여러 레코드가 연결될 수있는 ad_id 및 profile_id가 포함됩니다. 하나 더 잡았다가, 마이그레이션에, 추가하는 것을 잊지 마세요 : 당신이 추가 문의 사항이있는 경우 =>는 false

class CreateTableAdsProfiles < ActiveRecord::Migration 
    def change 
    create_table :ads_profiles, :id => false do |t| 
     t.integer :ad_id 
     t.integer :profile_id 
    end 
    end 
end 

에 ID를 물어 무료 떨어졌다.

관련 문제