2013-04-22 2 views
0

주소, 상태 및 우편 번호 필드가있는 연락처 리소스가있는 레일스 앱을 만들고 있습니다. 또한 사용자가 전화 번호를 입력 할 수있는 필드가 있습니다. 내가 영감을 얻기 위해 사용하고있는 다른 웹 사이트의 양식에서 사용자는 휴대 전화가 휴대 전화, 집 또는 사무실인지, 즉 전화 번호 유형을 나타낼 수 있습니다. 모델의 다른 필드에 대한 추가 정보를 허용하는 필드를 만들 수 있는지 궁금합니다.이 경우 Phone은 별도의 모델 (예 : Contact has_many : phones)이어야하며 전화 번호의 유형은 다음과 같습니다. 전화 모델의 일반 필드레일스 모델에서 속성의 속성

내 앱에서 사용자 has_one 연락처 때문에 사용자 has_one 연락처 및 has_many : phones 전화 대신 연락처 모델에 모든 전화 관련 정보를 보관하고 싶습니다.

답변

1

이렇게하려면 다른 모델을 사용하는 것이 좋습니다. 또 다른 하나는 전화 번호를 저장하는 해시를 만드는 것입니다.

class Contact 
    attr_accessible :phones 
    serialize :phones, Hash 
end 

그리고 각 휴대 전화를 적절한 키에 저장할 수 있습니다 (예 :

contact = Contact.new 
contact.phones = {home: '1234-1234', work: '1234-5678', mobile: '9876-5432'} 
contact.save! 

그리고 그들이 전화 해시 액세스 할 수 것입니다 :

contact.phone[:home] # => "1234-1234" 

모델에 serialize 명령을 제공함으로써이 ActiveRecord는 데이터베이스에 저장하기 위해 그것을 직렬화.

그래서 테이블에 text 필드를 만들면 배열이나 해시를 데이터베이스에 저장할 수 있습니다.

마이그레이션은 다음과 같습니다 api.rubyonrails.org/classes/ActiveRecord/Base.html

: 직렬화에 대한 자세한 내용은

rails g migration add_phones_to_contact phones:text 

관련 문제