我有一個多態型的關聯,其中,一個管理員和開發者每個有一個用戶(爲一個共同的認證機構)多態性關聯標識,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
當我通過rails控制檯創建開發人員或管理員時,User.profile_id始終是唯一的,它與我剛剛創建的開發人員或管理員相同。這似乎也符合與圖here
如果我有profile_type
= Developer
用戶,我想給開發者一個參考,是安全的獲得通過調用Developer.find(u.profile_id)
參考,同樣地,對於管理員?如果不是,那我該如何安全地做到這一點?
它現在有效,但我不確定它是否幸運,因爲我的桌子很小。
是。快速回答是,因爲你將'profile type'設置爲「Developer」,User'profile id'應該匹配'Developer'表中的一個。 – jason328 2013-04-08 18:35:12
我只是困惑,那麼他爲什麼在這個railscast中定義'find_commentable'方法:http://railscasts.com/episodes/154-polymorphic-association。 (該方法可在「註釋」部分查看) – 2013-04-08 18:40:03