<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-167  評論-65  文章-0  trackbacks-0
    多態(tài)關(guān)聯(lián) 也叫虛擬關(guān)聯(lián), 其實 表是不存在的。。。不像 :through => :connections 那connections的表是存在的,也可以不存在的,connections是一個關(guān)聯(lián)模型

    有這樣一個需求,需要用到 虛擬關(guān)聯(lián)

    在SNS中,例如xiaonei,douban等等都有 最近好友更新的內(nèi)容顯示,那么這個 一般是在一個 表中,例如 叫activities 表,更新有很多種 ,例如 修改頭像,發(fā)表日志,建立了好友關(guān)系,發(fā)表評論等等,。。說白了就是 一個表 關(guān)聯(lián)了 多個表,那就得用到 虛擬 關(guān)聯(lián)了。。

    表結(jié)構(gòu):


    原理:
    上面有三個表,activities表(記錄更新了那些操作,最重要的兩個字段是item_id,和item_type,item_id是對應(yīng)到關(guān)聯(lián)表的主鍵id,item_type是對應(yīng)到關(guān)聯(lián)表的表對象名例如comments表就是Comment) Posts表 (用戶發(fā)表文字的表,例如有發(fā)表blog的blog_id,發(fā)表論壇 topic的 topic_id,給用戶留言的client_info_id,body是發(fā)表的內(nèi)容),
    comments表(評論表,body是評論內(nèi)容,當然評論也好好多種評論,這個表里也需要關(guān)聯(lián)許多表,從comments表的字段中也可以看到用了虛擬關(guān)聯(lián))

    用法:
    model:

    activity
    class Activity < ActiveRecord::Base
      ................
      belongs_to :item, :polymorphic => true
    ..........................
    end

    Comment
    ..................
    has_many :activities, :foreign_key => "item_id" , :dependent => :destroy
    ..................

    加上 :dependent => :destroy 是當這條評論刪除時,activities 表里的記錄同時被刪除


    或者:

    has_many :activities, :as => :item , :dependent => :destroy


    那么 Post 模型 同理可得。。。。

    因為上面的 :item , 所以 activities 表里的 item_id ,  item_type 是約定俗成的。。。。。。。。。

    取數(shù)據(jù)
     activity.item.body
    activity 是activities表中的記錄對象

    ref:
    http://guides.rails.info/association_basics.html
    http://hideto.javaeye.com/blog/76709
    http://hi.baidu.com/rainchen/blog/item/fc3a94eeb31ad62b2df53412.html
    http://iceskysl.1sters.com/?action=show&id=25
    http://rubycnrails.cn/articles/23 (了解:dependent=>:destroy)




    write by feng
    posted on 2009-08-12 17:06 fl1429 閱讀(2381) 評論(0)  編輯  收藏 所屬分類: Rails
    已訪問數(shù):
    free counters
    主站蜘蛛池模板: 亚洲国产av一区二区三区| 亚洲18在线天美| 男女猛烈激情xx00免费视频| 国产精品成人免费一区二区| 亚洲日本香蕉视频| 亚洲熟妇AV一区二区三区宅男| 在线看片韩国免费人成视频| 亚洲免费黄色网址| 精品一区二区三区高清免费观看 | h片在线观看免费| 日韩国产免费一区二区三区| 亚洲午夜日韩高清一区| 亚洲高清无在码在线电影不卡| 亚洲国产AV无码一区二区三区| 免费的一级黄色片| 无码 免费 国产在线观看91| 精品国产污污免费网站aⅴ| 国产gv天堂亚洲国产gv刚刚碰| 中文字幕a∨在线乱码免费看| 国产精品免费看久久久无码| 美女扒开屁股让男人桶爽免费| 亚洲国产日韩成人综合天堂| 亚洲 日韩 色 图网站| 最新亚洲成av人免费看| 亚洲国产高清视频| 成人亚洲国产精品久久| 亚洲综合伊人久久综合| 蜜桃视频在线观看免费视频网站WWW| 一区二区三区亚洲视频| 西西人体免费视频| 亚洲人成777在线播放| 国产免费黄色大片| 免费人成在线观看网站| 亚洲www在线观看| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲精品成人网站在线观看| jizz在线免费播放| 亚洲韩国在线一卡二卡| 日韩高清免费观看| 国内精品久久久久影院亚洲| 亚洲精品国产精品国自产观看|