rails 使用技巧

  • 函數(shù)以問(wèn)號(hào)結(jié)尾的,說(shuō)明返回值是布爾值
  • return高級(jí)寫(xiě)法
if ValidationCode.exists?(email: params[:email],kind: 'sign_in',created_at: 1.minute.ago..Time.now)
      render status: :too_many_requests
      return 
end
相當(dāng)于
return render status: :too_many_requests if ValidationCode.exists?(email: params[:email],kind: 'sign_in',created_at: 1.minute.ago..Time.now)

  • 執(zhí)行命令rspec會(huì)測(cè)試spec目錄下的所有文件
  • 優(yōu)化點(diǎn):盡量把controller寫(xiě)短一點(diǎn),如果有跟數(shù)據(jù)有關(guān)的操作都寫(xiě)到相關(guān)的model里面
  • 枚舉值: 在model里寫(xiě)enum kind: { sign_in: 0, reset_password: 1 },但是數(shù)據(jù)庫(kù)還是存的int
  • :xxx 代表是嚴(yán)格版的字符串,只讀的,沒(méi)有什么api可以用
  • 路由針對(duì)index 必須用resourcesresource 對(duì)應(yīng)的是show
  • model里有鉤子函數(shù),可以合理利用
  • if !canSignIn => if not canSignIn => unless canSignIn
  • 判斷是不是測(cè)試環(huán)境 :if Rails.env.test?
  • jwt三部分:算法類(lèi)型.用戶(hù)信息.加密密文
  • window.atob/window.btoa :解碼/編碼 base64字符串
  • 挽救錯(cuò)誤 rescue
  • 相對(duì)路徑引用:require_relative '../xxx'
  • rspec 測(cè)試指定test: 1. rspec -e "分頁(yè)"2. rspec "./spec/requests/items_spec.rb:5" 5是行號(hào) 3.rubymine 自帶的測(cè)試按鈕
  • 標(biāo)準(zhǔn)時(shí)區(qū)(0時(shí)區(qū)):Time.new(2018,1,1,0,0,0,'Z')
  • 時(shí)間的邊界情況:直接用字符串,就不會(huì)出現(xiàn)時(shí)區(qū)歧義,item1 = Item.create amount: 100, created_at:"2018-01-01"
  • rspec 跳過(guò)測(cè)試: xit ...
  • bin/rails g model tag user:references 代表是引用,會(huì)在數(shù)據(jù)表里自動(dòng)變成 user_id,還會(huì)在model里加belongs_to
  • permit 代表只允許參數(shù)是 name 或 sign,如果傳了就獲取,不傳就不變
tag = Tag.find params[:id]
tag.update params.permit(:name, :sign)
  • nil?只會(huì)判空,tag.errors.empty? : empty?還會(huì)去看數(shù)組的長(zhǎng)度是否為0
  • tag.reload 重新從數(shù)據(jù)庫(kù)加載這個(gè)tag數(shù)據(jù)
  • if not 可以換成 unless
  • model里validates是標(biāo)準(zhǔn)校驗(yàn),validate是自定義校驗(yàn)
  • .map{|t| t.id} => .map(&:id)
  • create不會(huì)報(bào)錯(cuò),create!會(huì)報(bào)錯(cuò)
  • 根路由可以用 root 'home#index代替
  • User.create 執(zhí)行的是 model 的方法,而controller里的create是針對(duì)的路由的create
  • user = User.find_or_create_by email: params[:email]find_or_create直接會(huì)創(chuàng)建用戶(hù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容