는 내가 관리자 및 개발자 각각 (공통 인증 메커니즘에 대한) 사용자가 다형성 협회,다형성 협회 식별자, has_one 및
Developer.rb
class Developer < ActiveRecord::Base
attr_accessible :skype_name
has_one :user, :as => :profile, :dependent => :destroy
accepts_nested_attributes_for :user
end
이 고유성 Admin.rb이 동일하지만, 새로운 속성
를 추가하지 않습니다 User.rb
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation, :profile_id, :profile_type
has_secure_password
belongs_to :profile, :polymorphic => true
before_save { |user| user.email = email.downcase }
... some validations for unique email and before_save stuff ...
end
레일 콘솔을 통해 개발자 또는 관리자를 만들면 User.profile_id는 항상 고유하며 개발자 또는 관리자와 동일합니다. 이 Developer.find(u.profile_id)
를 호출하여 참조를 얻을 안전 및 유사 관리자입니다, 또한 내가 profile_type
= Developer
와 사용자가있는 경우도 here
과 일치하는 것, 그리고 나는 개발자에 대한 참조를 얻으려면? 그리고 그렇지 않다면 어떻게 안전하게 할 수 있습니까?
그것은 현재 작동하지만 테이블이 작기 때문에 운이 좋은 것인지 확실하지 않습니다.
예 찾아야한다. 빠른 대답은'profile type'을 "Developer"로 설정했기 때문에, User'profile id'는'Developer' 테이블에있는 프로파일 아이디와 일치해야한다는 것입니다. – jason328
나는이 railscast에서'find_commentable' 메소드를 왜 정의했는지 혼란 스럽습니다. http://railscasts.com/episodes/154-polymorphic-association. (이 방법은 'notes'섹션에서 볼 수 있습니다.) –