0
A
回答
1
我們假設有人(創建者)可以創建一個會議。創作者可能是客戶或聯繫人。
爲此你需要在你的會議桌的「creator_type」和「creator_id」列第一,所以加用script/rails generate migration AddTypeToMeetings
然後編輯一樣遷移文件的遷移:
class AddTypeToMeetings < ActiveRecord::Migration
def self.up
add_column :meetings, :creator_id, :integer
add_column :meetings, :creator_type, :string
end
end
其次,你必須適應你的機型:
meeting.rb
class Meeting < ActiveRecord::Base
# polymorphic association
belongs_to :creator, :polymorphic => true
end
client.rb
class Client < ActiveRecord::Base
has_many :meetings, :as => :creator
end
contact.rb
class Contact < ActiveRecord::Base
has_many :meetings, :as => :creator
end
如何使用:
@my_meeting = Meeting.new
@my_meeting.creator = @my_client
# or if you want a contact:
@my_meeting.creator = @my_contact
你可以閱讀更多關於達此多態關聯:
相關問題
- 1. 這種情況下最好的做法是什麼?
- 2. 如何最好地設計DB在這種情況下
- 3. sched_yield在這種情況下做什麼?
- 4. .map()在這種情況下做什麼?
- 5. *在這種情況下做什麼?:
- 6. 得到實際的URL,最佳做法,這種情況下
- 7. 在這種情況下使用uint64_t是不好的做法嗎?
- 8. 在這種特殊情況下編寫.gitignore的最佳做法
- 9. 在這種情況下捕獲異常的最佳做法
- 10. 如何爲這種情況做ORM?
- 11. LinqtoSQL/C#:如何在這種情況下
- 12. 如何在這種情況下
- 13. 如何在這種情況下
- 14. 是在這種情況下
- 15. 在這種情況下
- 16. 如何避免在這種情況下做100個查詢?
- 17. 如何在這種情況下做出優雅的設計?
- 18. 在這種情況下如何做動態查詢。 sql 2005
- 19. 在這種情況下如何做多個選擇操作?
- 20. 在這種情況下如何做MAVEN過濾?
- 21. 在這種情況下如何做原型繼承?
- 22. 在這種情況下如何做容量控制?
- 23. 這種情況下最好的數據結構是什麼?
- 24. 這種情況下最好的項目設置是什麼?
- 25. 如何在這種情況下獲取最近的屬性?
- 26. 如何做這種情況下的路由映射
- 27. jQuery的這種情況下
- 28. 知道這種情況下
- 29. 不能居中文本(不能找到一種方法如何做到這一點,在這種情況下)
- 30. 什麼是光標,它在做什麼(在這種情況下)?
西蒙感謝您的回答,但我怎麼能存儲 「ID」 這個對象:?!客戶端或諮詢creator_type只保存類型,是嗎? – 2011-05-17 16:19:40
據我所知,creator_type保存班級名稱,但您可以這樣做:'@ my_meeting.creator.is_a?(Client)'或'@ my_meeting.creator_is_a?(Contact)' – sled 2011-05-17 16:30:00
對不起,您需要'creator_id'列也是如此。我編輯了我的答案;) – sled 2011-05-17 16:31:22