日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Rails开发细节《一》

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rails开发细节《一》 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

常用命令

?

  • rails?new?new_app?
  • ?
  • cd?new_app
  • ?
  • rake db:create
  • ?
  • rails?server?
  • ?
  • rails?generate?controller?Blog?action1?action2
  • ?
  • rails generate scaffold Product title:string description:text

  • ?rails generate model Comment commenter:string body:text post:references
  • ?

  • rake db:migrate
  • ?
  • rake db:rollback
  • ?
  • rails test:units
  • ?
  • rails?console?
  • 約定

    rails中有很多的約定,正是這些約定幫我們節(jié)省了時(shí)間,讓我們很清晰的明白項(xiàng)目的結(jié)構(gòu),文件的位置。

    表名約定

    表名默認(rèn)使用model的復(fù)數(shù)形式,小寫(xiě)。例如:model是Sheep,默認(rèn)的表名就是sheeps,如果我們想自定義一些其他名字,或者基于一個(gè)已經(jīng)存在的數(shù)據(jù)表進(jìn)行開(kāi)發(fā),不能修改這個(gè)數(shù)據(jù)表的名稱(chēng),那么我們可以通過(guò)下面的代碼來(lái)指定表的名稱(chēng)。

    ?

  • class?Sheep?<?ActiveRecord::Base?
  • ?
  • ??self.table_name?=?"sheep"?
  • ?
  • end?
  • 表主鍵的約定

    默認(rèn)主鍵名稱(chēng)id,整型,自增。在數(shù)據(jù)表中名稱(chēng)就是id,在model中也通過(guò).id來(lái)訪問(wèn)。如果想指定其他名稱(chēng),可以通過(guò)下面的代碼實(shí)現(xiàn)。

    ?

  • class?LegacyBook?<?ActiveRecord::Base?
  • ?
  • ??self.primary_ke?=?"isbn"?
  • ?
  • end?
  • 通過(guò)上面的修改之后,數(shù)據(jù)表的主鍵列名稱(chēng)變?yōu)閕sbn,在model中也通過(guò).isbn來(lái)訪問(wèn)。但是有一個(gè)地方例外,就是給主鍵賦值,還是需要使用id來(lái)賦值。

    ?

  • book?=?LegacyBoo.new?
  • book.id?=?"1-214-985"?
  • book.title?=?"programming?in?ruby"?
  • 除了給主鍵賦值需要用id,其他時(shí)候都用指定的列名。

    model的關(guān)系

    表關(guān)系有三種:

    one-to-one

    one-to-many

    many-to-many

    在model中使用的聲明有:has_one, has_many, belongs_to, has_and_belongs_to_many。

    one-to-one

    ?

  • class?Order?<?ActiveRecord::Base?
  • ??has_one?:invoice?
  • end?
  • ?
  • class?Invoice?<?ActiveRecord::Base?
  • ??belongs_to?:order?
  • end?
  • 一個(gè)訂單有一個(gè)發(fā)票抬頭,一對(duì)一的關(guān)系。

    有一條很重要:包含外鍵的表,一定會(huì)有一個(gè)belongs_to的聲明。

    one-to-many

    ?

  • class?Order?<?ActiveRecord::Base?
  • ??has_many?:line_items?
  • end?
  • ?
  • class?LineItem?<?ActiveRecord::Base?
  • ??belongs_to?:order?
  • end?
  • 一個(gè)訂單會(huì)有很多的item,一對(duì)多的關(guān)系。

    many-to-many

    ?

  • class?Product?<?ActiveRecord::Base?
  • ??has_and_belongs_to_many?:categories?
  • end?
  • ?
  • class?Category?<?ActiveRecord::Base?
  • ??has_and_belongs_to_many?:products?
  • end?
  • 一個(gè)產(chǎn)品屬于多個(gè)目錄,一個(gè)目錄包含多個(gè)產(chǎn)品,多對(duì)多的關(guān)系。除了products表和categories表,會(huì)有一個(gè)中間表categories_products(category_id, product_id)來(lái)存放這個(gè)關(guān)系。

    我們也可以自己定義關(guān)系表,還可以存放一些其他信息,一些關(guān)于關(guān)系的信息。其實(shí)就是把多對(duì)多的關(guān)系拆分開(kāi),成為兩個(gè)一對(duì)多的關(guān)系,這樣也好理解些。

    ?




    本文轉(zhuǎn)自 virusswb 51CTO博客,原文鏈接:http://blog.51cto.com/virusswb/1016250,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

    總結(jié)

    以上是生活随笔為你收集整理的Rails开发细节《一》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。