1

나는 상호 HABTM 관계가 두 테이블과 기본 자동 생성 Rails4 프로젝트를 가지고 :Rails4 : HABTM 관계를 설정하는 위치와 방법은 무엇입니까?

class Page < ActiveRecord::Base 
    has_and_belongs_to_many :topics 
end 
class Topic < ActiveRecord::Base 
    has_and_belongs_to_many :pages 
end 

표는 존재 가입 (pages_topics이라고 함) 제대로 작동하는 것 같다 해당.

내가 create와 새에 대한 <<을 사용하여 두 테이블을 연결할 수 rails console를 사용하여 각각의 항목을 기존 알아 냈어요 그러나

Page.find(1).topics.create(tname: "topic name") ## for new topics 

Page.find(1).topics << Topic.find(3) ## for existing topics 

, 나는에 일이를 넣어하는 방법을 잘 모르겠어요 내 코드.

  • 내가 컨트롤러의 createupdate 방법 내 컨트롤러 클래스 (들)에 추가 할합니까?
  • 그렇다면 일반적인 문자 params.require(...).permit(...)의 매개 변수 패턴과 함께 어떻게 수행 할 수 있습니까?

또는 아직 배운 적이없는 더 좋은 방법이 있습니까?

답변

1

관계를 관리하려면 조인 테이블이 필요합니다. 자세한 내용은 레일 안내서 here을 확인하십시오. 설정이 끝나면 양식 (원하는 경우 또는 필요하다면)과 컨트롤러의 create 양식을 수정하여 필요한 많은 형제/부모/자녀를 만들 수 있습니다.

def new 
    @page = Page.new 
    @page.build_topic 
    2.times do # or something like this 
    @page.topic.build 
    end 
end 

관계를 통해 컨트롤러 코드를 뒤집어 상대방 관계를 구축 할 수 있습니다.

+0

죄송합니다. 제가 조인 테이블을 설정했는데 제대로 작동하는 것 같습니다. 나는 원래의 질문을 업데이트 할 것이다. 일단 모든 테이블이 설정되면, 일반적으로 연관을 만들기 위해 어디에서 코드를 작성합니까? 컨트롤러 방법 또는 다른 곳에서? –

+0

그런 관계를 어떻게 구축하는지 알고 싶습니까? –

+0

내 생각 엔 ... 내 게시물에서 언급 한 것처럼 콘솔을 사용하여 연결을 만드는 방법을 이해할 수는 있지만 프로젝트 코드 자체에 연결을 어디에 또는 어떻게 배치해야하는지 모르겠습니다. –

0

특정 페이지 (Id)에 대한 주제 목록을 원하면 pagesController.rb에 코드를 입력하고 특정 주제 (id)와 관련된 페이지 목록과 관계를 만들고 싶다면 컨트롤러에 코드를 입력하십시오. topicsController.rb의 코드. 그리고 물어볼 다른 것이 있으면 명확히 명기하여 여러분의 필요에 따라 이해하고 대답 할 수 있도록하십시오.