2013-04-10 3 views
0

레일스 모델에 다른 모델을 속성으로 만들 수있는 방법이 있습니까?레일스에서 ​​객체를 다른 객체의 속성으로 만드는 방법

예. User 모델의 주소 특성은 주소 특성을 가지며 사용자 모델의 주소 특성은 자체 클래스입니다.

User Model 
----------  
lastName:string     
firstname:string    
address: addressModel 

Address Model 
------------- 
street: string 
city:string 
zipCode:integer 

답변

1

예, 당신은 그것에 대해 associations를 사용할 수 있습니다

class User < ActiveRecord::Base 
    has_one :address 
end 

class Address < ActiveRecord::Base 
    belongs_to :user 
end 

참고이 작업을 위해 당신이 당신의 주소 테이블에 user_id 필드를 가질 필요가있다.

이렇게하면 사용자 개체에 Address 유형의 주소 특성이 부여됩니다. 또한 사용자에게 주소를 지정할 수도 있습니다. 예 :

address = Address.find(1) 
user = User.find(1) 
user.address = address 
user.save 

user.address.class # => Address 
user.address.id # => 1 

이것은 사용자와 주소가 1 : 1로 연결되어있는 예입니다. 다른 유형의 연결에 대한 설명은 위의 링크 된 가이드를 확인하십시오.

+0

굉장한데, 네가 연관성이 있어야만하는지 또는 속성 유형을 다른 클래스로 만들 수 있는지 확실하지 않았습니다. User_id를 추적하는 Im은 모델의 레일 생성기로 자동 생성되어야합니다. 그리고 링크에 감사 드리며 유용 할 것입니다. –

관련 문제