[RUBY-ON-RAILS] belongs_to와 has_one의 차이점은 무엇입니까?
RUBY-ON-RAILSbelongs_to와 has_one의 차이점은 무엇입니까?
belongs_to와 has_one의 차이점은 무엇입니까?
루비 레일에 가이드를 읽는 것은 나에게 도움이되지 않았습니다.
해결법
-
==============================
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.그것은 외래 키가 앉아있는 위치에 대한합니다.
그것은 외래 키가 앉아있는 위치에 대한합니다.
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.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.내가, 우리가 가정 추가하려는 한 가지 추가 점은 모델 연결을 다음 한
내가, 우리가 가정 추가하려는 한 가지 추가 점은 모델 연결을 다음 한
클래스 저자
우리는 위의 연결을 작성하는 경우 우리는 특정 작가의 모든 책에 의해 얻을 수있는,
@books = @author.books
그러나 특정 도서에 대한 우리로 교신 저자를 얻을 수 없다,
@author = @book.author
우리는이 같은, 또한 도서 모델에 연결을 추가 할 필요가 위의 코드 작업 작품을 만들기 위해
class Book < ApplicationRecord belongs_to :author end
이 책 model.For 모드 세부 방법 '저자'를 추가합니다 안내서를 참조하십시오
-
==============================
5.단순성의 관점에서, belongs_to는 has_one에, 당신은 has_one 관계를 시행 할 수있는 외래 키가있는 모델과 테이블에 다음과 같은 제약 조건을 추가해야하기 때문에 has_one보다 낫다 :
단순성의 관점에서, belongs_to는 has_one에, 당신은 has_one 관계를 시행 할 수있는 외래 키가있는 모델과 테이블에 다음과 같은 제약 조건을 추가해야하기 때문에 has_one보다 낫다 :
from https://stackoverflow.com/questions/3808926/whats-the-difference-between-belongs-to-and-has-one by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 컬 : (1) 프로토콜 지원 또는 libcurl에 비활성화하지 HTTPS (0) | 2020.02.15 |
---|---|
[RUBY-ON-RAILS] ExecJS :: ProgramError : 예기치 않은 토큰 punc«(»예상 punc«:»레이크 자산을 실행 : 생산에 사전 컴파일 (0) | 2020.02.15 |
[RUBY-ON-RAILS] 여러 외래 키와 관련 레일 (0) | 2020.02.15 |
[RUBY-ON-RAILS] 내가 어떻게 활성 레코드 레일에 두 개의 서로 다른 데이터베이스와 함께 작동합니까? (0) | 2020.02.15 |
[RUBY-ON-RAILS] 설치 MYSQL : 오류 : 빌드 보석 네이티브 확장에 실패 (0) | 2020.02.15 |