ruby on rails에서 모델의 관련 상세 정보

선언:
모델과 관련된 것을 배우기 전에 먼저 몇 가지를 명심해야 한다.
1. 연관관계는 양쪽 끝을 모두 잘 써야 한다. 그렇지 않으면 초보자가 알아볼 수 없는 오류가 생길 수 있다.그리고 코드를 이해하는 데 매우 좋다.
2.모델의 이름은 단수이고 controller는 복수이다.
3.blong_to 뒤에는 반드시 단수이고 소문자여야 합니다.has_many 뒤에는 복수가 있어야 합니다.
한 쌍 남짓
예:
왕 씨 어머니는 두 명의 아이가 있는데, 샤오밍과 샤오량이다.왕엄마, 아이가 많다고 할 수 있어요.샤오밍, 엄마가 하나 있다.왕 군, 엄마가 있어요.우리는 일반적으로 시계를 설계할 때 이렇게 설계한다.
mothers 테이블에서 id와name
sons 테이블에 id와name이 있습니다.
논리적 관계를 늘리기 위해 메인 키 관계는 여러 쪽에서 한 열을 늘리기 때문에sons표에는 세 열, id와name,mother_id (mothers 테이블에 대응하는 id)
일반 SQL:

select test_associate.mothers.name from test_associate.mothers inner join test_associate.sons on sons.mother_id = mothers.id where sons.name = ' '
루비 코드:

class Mother 
 has_many :sons 
end 

class Son 
 belongs_to :mother 
end

해석: 엄마 하나에 자식 하나, 아들 하나에 엄마 하나.
우리는 rails console에서 테스트할 수 있다.
xiao_wang = Son.first 
mom = xiaowang.mother
이거.mother 방법은 class Son의 belongs_to:mother라는 말이 만들어졌어요.
즉, 한 번 변환된 sql 문장에 해당한다.

select * from mothers 
  join sons 
  on sons.mother_id = mothers.id 
  where sons.id = 1
자세한 설명:
A:belongs_to :mother
B:belongs_to :mother, :class => 'Mother', :foreign_key => 'mother_id'
A=B
이것이 바로 Rails의 가장 전형적인 관례에 따라 프로그래밍을 하고 어떤 테이블에 대응하는 class를 설명하며 class 간에 관련 관계를 잘 설명하는 것이다.
1.belongs_to:mother,rails는:mothers표, 1의 한쪽이라고 판단할 수 있다.현재class는'class Son'이다. 그러면 rails는 두 표의 대응 관계를 알 수 있다.
2.:class=>'Mother'는 하나의 끝, 대응하는 모델class가 어머니임을 나타낸다.rails의 관례에 따르면 Mother모델은 데이터베이스에 있는mothers표에 대응한다.
3.:foreign_key => 'mother_id', rails에서 알 수 있듯이, 외키는'mother_id'. 한 쌍의 다중 관계에서 외부 키는 여러 개의 끝에 저장된다(즉sons, 그러니까sons표에 열이 있어야 한다:mother_id)
그래서 이 복잡한 SQL 조건이 모두 갖추어져서 생성할 수 있다.
위의 루비 코드는 설정된 후에 이렇게 호출할 수 있습니다.

son = Son.first
son.mother # .mother ,   class Son   belongs_to  。
mother = Mother.first
mother.sons  # .sons  ,   class Mother   hash_many  。
2:1 대 1, 비교적 간단하고 자주 사용하지 않습니다. 여기는 소개하지 않습니다.여보
다대다
예:
한 학생, 여러 선생님이 있습니다.
한 선생님은 여러 아이를 가르칠 수 있다.
우리는 종종 이렇게 한다.
students에는 id와name 두 필드가 있습니다.
teachers에는 id와name 두 필드가 있습니다.
어떤 시계에 놓아도 적합하지 않다. 이것은 우리가 필요로 하는 중간 시계, 즉 교량 시계이다.
lessons에는 id와name,student_가 있습니다id와 teacher_id
원래 SQL:

select teachers.*, students.*, lessons.* 
  from lessons from teachers , 
  join teachers 
  on lessons.teacher_id = teachers.id 
  join students 
  on lessons.student_id = students.id  
  where students.name = ' '
루비 코드:

class Student 
 has_many :lessons 
 has_many :teachers, :through => :lessons 
end
힌트:has_many:teachers,:through=>:lessons는
has_many :teachers, :class => 'Teacher', :foreign_key => 'teacher_id', :throught => :lessons
class Teachers 
  has_many :lessons 
  has_many :students, :through => :lessons 
end
왕 군의 선생님은 위의 원시 SQL 문장과 어떤 것들이 있는지 보십시오.

Student.find_by_name(' ').teachers
이상은 본고가 여러분에게 공유한 모든 내용입니다. 제시된 예시도 매우 간단하고 이해하기 쉬우니 여러분이 좋아하시기 바랍니다.

좋은 웹페이지 즐겨찾기