복붙노트

[RUBY-ON-RAILS] belongs_to와 has_one의 차이점은 무엇입니까?

RUBY-ON-RAILS

belongs_to와 has_one의 차이점은 무엇입니까?

belongs_to와 has_one의 차이점은 무엇입니까?

루비 레일에 가이드를 읽는 것은 나에게 도움이되지 않았습니다.

해결법

  1. ==============================

    1.그들은 본질적으로 같은 것은, 유일한 차이점은 당신이있는 관계의 어떤 쪽 않습니다. 프로파일 및 프로파일 클래스에서 당신은 belongs_to 거라고 : 사용자가 프로필이있는 경우, 사용자 클래스에서 당신은 has_one이있을 것이다 사용자. 외부 키가 어디에서 "가"다른 개체, 모양을 결정합니다. 우리는 프로파일 테이블이 USER_ID 컬럼을 가지고 있기 때문에 사용자가 프로필을 "이"말할 수 있습니다. , 사용자의 테이블에 PROFILE_ID라는 컬럼이 있다면 그러나, 우리는 프로필 사용자를 가지고 있으며, belongs_to / has_one의 위치가 교환 될 것이라고 말할 것입니다.

    그들은 본질적으로 같은 것은, 유일한 차이점은 당신이있는 관계의 어떤 쪽 않습니다. 프로파일 및 프로파일 클래스에서 당신은 belongs_to 거라고 : 사용자가 프로필이있는 경우, 사용자 클래스에서 당신은 has_one이있을 것이다 사용자. 외부 키가 어디에서 "가"다른 개체, 모양을 결정합니다. 우리는 프로파일 테이블이 USER_ID 컬럼을 가지고 있기 때문에 사용자가 프로필을 "이"말할 수 있습니다. , 사용자의 테이블에 PROFILE_ID라는 컬럼이 있다면 그러나, 우리는 프로필 사용자를 가지고 있으며, belongs_to / has_one의 위치가 교환 될 것이라고 말할 것입니다.

    여기에 대한 자세한 설명입니다.

  2. ==============================

    2.그것은 외래 키가 앉아있는 위치에 대한합니다.

    그것은 외래 키가 앉아있는 위치에 대한합니다.

    class Foo < AR:Base
    end
    

    클래스 A가 클래스 B와 has_one 관계가있는 경우 개념적 수준에서, 다음 클래스 A는 클래스 A의 자녀이기 때문에 클래스 B의 부모는 따라서 클래스 B가 클래스 A와 belongs_to 관계를 가질 것이다

    모두 1-1 관계를 표현한다. 차이점은 belongs_to 관계를 선언하는 클래스의 테이블에가는 외래 키를 배치 할 위치를 대부분이다.

    class User < ActiveRecord::Base
      # I reference an account.
      belongs_to :account
    end
    
    class Account < ActiveRecord::Base
      # One user references me.
      has_one :user
    end
    

    같은 것을 볼 수 있었다 이러한 클래스의 테이블 :

    CREATE TABLE users (
      id int(11) NOT NULL auto_increment,
      account_id int(11) default NULL,
      name varchar default NULL,
      PRIMARY KEY  (id)
    )
    
    CREATE TABLE accounts (
      id int(11) NOT NULL auto_increment,
      name varchar default NULL,
      PRIMARY KEY  (id)
    )
    
  3. ==============================

    3.has_one 일반적으로 belongs_to은 다른 관련 모델에 지적하는 의미에서 동일합니다. belongs_to 확인이 모델은 정의 된 foreign_key이 있는지 확인하십시오.       has_one은 다른 모델 has_foreign 키가 정의되어 있는지 확인합니다.

    has_one 일반적으로 belongs_to은 다른 관련 모델에 지적하는 의미에서 동일합니다. belongs_to 확인이 모델은 정의 된 foreign_key이 있는지 확인하십시오.       has_one은 다른 모델 has_foreign 키가 정의되어 있는지 확인합니다.

    더 구체적를하기 위해, 관계의 양면이있다, 하나는 소유자이고, 다른 하나는 소지품입니다. 단지 has_one가 정의되어있는 경우, 우리는 그것의 소지품을 얻을 수 있지만, 물건의 소유자를 얻을 수 없습니다. 소유자를 추적하려면 우리가 속한 모델뿐만 아니라 belongs_to를 정의해야합니다.

  4. ==============================

    4.내가, 우리가 가정 추가하려는 한 가지 추가 점은 모델 연결을 다음 한

    내가, 우리가 가정 추가하려는 한 가지 추가 점은 모델 연결을 다음 한

    클래스 저자

    우리는 위의 연결을 작성하는 경우 우리는 특정 작가의 모든 책에 의해 얻을 수있는,

    @books = @author.books
    

    그러나 특정 도서에 대한 우리로 교신 저자를 얻을 수 없다,

    @author = @book.author
    

    우리는이 같은, 또한 도서 모델에 연결을 추가 할 필요가 위의 코드 작업 작품을 만들기 위해

    class Book < ApplicationRecord
      belongs_to :author
    end
    

    이 책 model.For 모드 세부 방법 '저자'를 추가합니다 안내서를 참조하십시오

  5. ==============================

    5.단순성의 관점에서, belongs_to는 has_one에, 당신은 has_one 관계를 시행 할 수있는 외래 키가있는 모델과 테이블에 다음과 같은 제약 조건을 추가해야하기 때문에 has_one보다 낫다 :

    단순성의 관점에서, belongs_to는 has_one에, 당신은 has_one 관계를 시행 할 수있는 외래 키가있는 모델과 테이블에 다음과 같은 제약 조건을 추가해야하기 때문에 has_one보다 낫다 :

  6. from https://stackoverflow.com/questions/3808926/whats-the-difference-between-belongs-to-and-has-one by cc-by-sa and MIT license