老妖的博客
          現(xiàn)實(shí)的中沒有幾個(gè)人能夠真為對方去死,甚至山盟海誓很快就會在金錢面前變的微不足道,這才是生活。沒有永遠(yuǎn)的愛,除了你的父母對你,當(dāng)然也就沒有永遠(yuǎn)的恨,更沒有永遠(yuǎn)的痛,時(shí)間是最好的治療大師,它會很快撫平你心靈上累累的傷痕。很多年以后你想起來時(shí),那些在你生命中洶涌來往的人群至多是個(gè)模糊的影子或者毫無意義的名字
          posts - 105,  comments - 171,  trackbacks - 0

          作為java中的O/R Mapping的使用者來說,看到rails中的activeRecord的實(shí)現(xiàn)后不禁汗顏,原來O/R Mapping可以如此簡單。
          我反復(fù)看過幾遍activeRecord的文檔,覺得其靈活之處不亞于hibernate,而且簡單實(shí)用。
          現(xiàn)作筆錄如下:
          1.關(guān)聯(lián)
          n:1: belongs_to: XXXX
          1:n: has_many:XXX
          1:1: has_one :XXX
          m:n: has_and_belongs_to_many:XXX
          連接join: :through => :XXX (for ex:has_many :photos :through => :slides) rails 1.1才有此功能
          特殊關(guān)聯(lián):
          acts_as_list :列表
          acts_as_tree :父子關(guān)系
          acts_as_nested_set

          class Slide < ActiveRecord::Base
          ? belongs_to :slideshow
          ? acts_as_list :scope => "slideshow_id"
          ? belongs_to :photo
          end
          表示sildes表中的slideshow_id為belongs_to :slideshow關(guān)系中的外鍵(FK)
          class Category < ActiveRecord::Base
          ? acts_as_tree
          end

          ?

          2.級聯(lián)
          has_many :XXX, dependent => true

          3.設(shè)定主鍵:rails不支持復(fù)合主鍵,rails默認(rèn)數(shù)據(jù)表中的主鍵名稱為id,如果您的主鍵不為id,如下設(shè)置:
          class Photo < ActiveRecord::Base
          ? set_primary_key "created_at"
          end
          4.domain中的繼承關(guān)系
          class Photographer < Person
          end

          class Person < ActiveRecord::Base
          end
          5.domain中的組件關(guān)系
          CREATE TABLE people (
          ?? id INT AUTO_INCREMENT NOT NULL,
          ?? type VARCHAR(20),
          ?? name VARCHAR(20),
          ?? email VARCHAR(30),
          ?? street_address VARCHAR(30),
          ?? city VARCHAR(30),
          ?? state VARCHAR(20),
          ?? zip INTEGER(5),
          ?? camera VARCHAR(20),
          ?? PRIMARY KEY (id)
          );

          class Person < ActiveRecord::Base
          ? composed_of :address, :class_name => "Address",
          ????????????? :mapping => [[:street_address, :street_address],
          ?????????????????????????? [:city, :city],
          ?????????????????????????? [:state, :State],
          ?????????????????????????? [:zip, :zip]]
          end
          class Address
          ? def initialize(street_address, city, state, zip)
          ??? @street_address = street_address
          ??? @city = city
          ??? @state = state
          ??? @zip = zip
          ? end

          ? attr_reader :street_address, :city, :state, :zip
          end
          6.查找記錄
          find_by_<column_name> find_by_id
          find_by_<column_name>_and_<column_name> find_by_name_and_email(name, email)
          7.驗(yàn)證字段有效性
          class Photo < ActiveRecord::Base
          ? validates_presence_of :filename 驗(yàn)證是否為空
          end

          validates_format_of :email,
          ??????????????????? :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
          validates_length_of :name, :within => 6..100???????????????????
          8.事務(wù)處理
          def transfer(from, to, amount)
          ? Account.transaction do
          ??? from.debit(amount)
          ??? to.credit(amount)
          ? end
          end

          ?

          ?


          ?

          posted on 2006-09-14 15:55 老妖 閱讀(4975) 評論(0)  編輯  收藏 所屬分類: rails

          <2006年9月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          隨筆分類(48)

          隨筆檔案(104)

          好友鏈接

          我的豆瓣

          積分與排名

          • 積分 - 221783
          • 排名 - 257

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 望城县| 慈利县| 财经| 肇东市| 明星| 闵行区| 略阳县| 盖州市| 淮南市| 利辛县| 仁怀市| 本溪| 额尔古纳市| 自贡市| 永登县| 弥勒县| 三亚市| 岚皋县| 黎平县| 靖江市| 太原市| 弥勒县| 开平市| 溧阳市| 永仁县| 杭锦旗| 图木舒克市| 额济纳旗| 资中县| 南宫市| 奉新县| 台南县| 保康县| 灵台县| 陵水| 安吉县| 南岸区| 遂溪县| 广东省| 理塘县| 老河口市|