管理者と開発者がそれぞれユーザーを持つポリモーフィックな関連付けがあります(共通の認証メカニズム用)
開発者.rb
class Developer < ActiveRecord::Base
attr_accessible :skype_name
has_one :user, :as => :profile, :dependent => :destroy
accepts_nested_attributes_for :user
end
Admin.rbは同じですが、新しい属性は追加されていません
ユーザー.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
Rails コンソールを使用して開発者または管理者を作成すると、User.profile_id は常に一意であり、作成したばかりの開発者または管理者と同じです。こちらの図にも合いそうです
profile_type
=を持つユーザーがいDeveloper
て、開発者への参照を取得したい場合、 を呼び出して参照を取得しても安全Developer.find(u.profile_id)
ですか? 同様に管理者も同様ですか? そうでない場合、どうすれば安全に行うことができますか?
現時点では機能していますが、テーブルが小さいため、運が良かっただけかどうかはわかりません。