成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Rails 之旅第 2 天:Rails 關聯和拖動 div

開發 項目管理
大家好!今天是我搭建這個玩具項目的第 2 天。下面再來記錄一下關于 Rails 的一些有趣的事情吧!

[[356168]]

大家好!今天是我搭建這個玩具項目的第 2 天。下面再來記錄一下關于 Rails 的一些有趣的事情吧!

目標:做一個冰箱詩歌論壇

我想做一種無聊的標準網站來學習 Rails,并且其他人可以與之互動,就像一個論壇一樣! 但如果人們真的可以在網站上打字,那就會產生各種各樣的問題(如果他們是垃圾郵件發送者怎么辦?又或者只是言語刻薄?)。

我想到的第一個想法是,可以讓人們與網站互動,但實際上卻不能在網站上打字,那就是一個“冰箱詩歌論壇”,只給你一組固定的字,你就可以隨意組合。

所以,這就是我們的計劃!

我這個項目的目標是想知道我是否能用 Rails 來做其他的小型網絡項目(而不是像我通常做的那樣,使用一些更基本的東西,比如 Flask,或者放棄后端,用 Javascript 來寫所有東西)。

怎么把字拖來拖去呢?jQuery 的可拖放 UI!

我想讓大家能夠把文字拖動起來,但我又不想寫很多 Javascript。結果發現這超級簡單 —— 有一個 jQuery 庫可以做到,它叫做 draggable!一開始,拖動并不成功。

一開始拖動在手機上是不行的,但是有一個技巧可以讓 jQuery UI 在手機上工作,叫做 jQuery UI touch punch。下面是它的樣子(有興趣看工作原理的可以查看源碼,代碼很少)。

banana forest cake is

一個有趣的 Rails 功能:關聯

我以前從來沒有使用過關系型 ORM,對于 Rails,我很興奮的一件事就是想看看使用 Active Record 是什么樣子的!今天我了解了 Rails 的 ORM 功能之一:關聯。如果你像我一樣對 ORM 完全不了解的話,那就來看看是怎么回事吧。

在我的論壇中,我有:

  • 用戶
  • 話題(我本來想把它叫做“線索”,但顯然這在 Rails 中是一個保留詞,所以現在叫做“話題”)。
  • 帖子

當顯示一個帖子時,我需要顯示創建該帖子的用戶的用戶名。所以我想我可能需要寫一些代碼來加載帖子,并為每個帖子加載用戶,就像這樣(在 Rails 中,Post.where 和 User.find 將會運行 SQL 語句,并將結果轉化為 Ruby 對象):

  1. @posts = Post.where(topic_id: id)
  2. @posts.each do |post|
  3. user = User.find(post.user_id)
  4. post.user = user
  5. end

這還不夠好,它要為每個帖子做一次單獨的 SQL 查詢!我知道有一個更好的方法,我發現它叫做關聯。這個鏈接是來自 https://guides.rubyonrails.org 的指南,到目前為止,它對我很有幫助。

基本上我需要做的就是:

  1. 在 User 模型中添加一行 has_many :post
  2. 在 Post 模型中添加一行 belongs_to :user
  3. Rails 現在知道如何將這兩個表連接起來,盡管我沒有告訴它要連接到什么列上!我認為這是因為我按照它所期望的慣例命名了 posts 表中的 user_id 列。
  4. 對 User 和 Topic 做完全相同的事情(一個主題也有很多帖子:has_many :posts)。

然后我加載每一個帖子和它的關聯用戶的代碼就變成了只有一行! 就是這一行:

  1. @posts = @topic.posts.order(created_at: :asc).preload(:user)

比起只有一行更重要的是,它不是單獨做一個查詢來獲取每個帖子的用戶,而是在 1 個查詢中獲取所有用戶。顯然,在 Rails 中,有一堆不同的方法來做類似的事情(預加載、急切加載、聯接和包含?),我還不知道這些都是什么,但也許我以后會知道的。

一個有趣的 Rails 功能:腳手架!

Rails 有一個叫 rails 的命令行工具,它可以生成很多代碼。例如,我想添加一個 Topic 模型/控制器。我不用去想在哪里添加所有的代碼,可以直接運行

  1. rails generate scaffold Topic title:text

并生成了一堆代碼,這樣我已經有了基本的端點來創建/編輯/刪除主題(Topic)。例如,這是我的現在的主題控制器,其中大部分我沒有寫(我只寫了高亮的 3 行)。我可能會刪除很多內容,但是有一個起點,讓我可以擴展我想要的部分,刪除我不想要的部分,感覺還不錯。

數據庫遷移!

rails 工具還可以生成數據庫遷移! 例如,我決定要刪除帖子中的 title 字段。

下面是我要做的:

  1. rails generate migration RemoveTitleFromPosts title:string
  2. rails db:migrate

就是這樣 —— 只要運行幾個命令行咒語就可以了! 我運行了幾個這樣的遷移,因為我改變了對我的數據庫模式的設想。它是相當直接的,到目前為止 —— 感覺很神奇。

當我試圖在一列中的某些字段為空的地方添加一個“不為空”(not null)約束時,情況就變得有點有趣了 —— 遷移失敗。但我可以修復違例的記錄,并輕松地重新運行遷移。

今天就到這里吧!

明天,如果我有更多的進展,也許我會把它放在互聯網上。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-12-07 16:56:35

Rails

2009-08-27 10:21:22

Ruby on Rai

2020-10-28 21:00:38

RailsMVC命令

2009-08-06 09:13:36

Ruby on Rai

2009-07-01 10:30:00

Ruby on Rai

2009-12-14 15:30:43

安裝Ruby on R

2009-12-17 15:56:34

Rails參數bind

2009-12-17 16:16:24

Rails方法send

2015-10-14 17:27:18

性能

2009-12-17 14:29:50

Ruby on Rai

2012-06-11 09:44:10

微軟AzurePython

2015-10-10 11:00:05

RubyRails性能

2009-12-16 16:37:59

Ruby on Rai

2010-09-07 14:44:50

DB2 數據庫

2009-08-07 10:27:45

Eclipse和Net

2009-12-16 15:41:10

Ruby on Rai

2009-12-16 17:37:31

Ruby on Rai

2009-12-17 17:37:42

Ruby on Rai

2010-09-25 14:39:29

Bruce Tate

2016-09-27 23:54:16

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠干av| 欧美视频日韩 | 精品欧美一区免费观看α√ | 日韩免费福利视频 | 国产99久久精品一区二区永久免费 | 香蕉婷婷 | 欧美不卡一区二区三区 | 国产一区视频在线 | 最新日韩在线视频 | 免费在线观看黄网站 | 国产电影一区二区 | 日韩性生活网 | 中文字幕av亚洲精品一部二部 | 秋霞a级毛片在线看 | 国内精品久久久久久久 | 射欧美 | 欧美色综合网 | 超碰3| 亚洲一区二区三区久久 | av一二三区 | 国产男女猛烈无遮掩视频免费网站 | 国产视频福利 | 免费观看黄色片视频 | 亚洲欧美中文日韩在线v日本 | zzzwww在线看片免费 | 精品久久久久一区二区国产 | av中文在线 | 久久久高清 | 婷婷色国产偷v国产偷v小说 | 久草在线视频中文 | 欧美日韩视频在线播放 | h片在线免费看 | 国外成人在线视频网站 | 精品伦精品一区二区三区视频 | www国产成人免费观看视频,深夜成人网 | 日韩一区二区精品 | 日韩中文字幕网 | 中文字幕一区二区三区精彩视频 | 国产激情一区二区三区 | av午夜激情 | 亚洲精品欧美一区二区三区 |