- Add Gem.
(/Gemfile)
加 gem 到 Gemfile 中
gem 'friendly_id', '~> 5.1.0'
gem 'babosa'
- 安裝套件
bundle install
- 建立Table
($rails c)
rails g friendly_id
rails g migration add_slug_to_posts slug:string:uniq
rake db:migrate
- 修改Model
(app/models/post.rb)
class Post < ActiveRecord::Base
belongs_to :user, foreign_key: :user_id
has_many :comments
has_many :post_categories
has_many :categories, through: :post_categories
has_many :votes, as: :voteable
validates :title, presence: true, length: {minimum: 5}
extend FriendlyId
friendly_id :id, use: :slugged
# 原本是input.to_s.parameterize,但是parameterize只支援
# 英文跟數字,所以改用babosa的to_slug
def normalize_friendly_id(input)
input.to_s.to_slug.normalize.to_s
end
def should_generate_new_friendly_id?
slug.blank? || id_changed?
# slug 為 nil 或 name column 變更時更新
end
def slug_candidates
[ :id, [:id, :title]]
end
end
- 使用friendly套件查找
(config/initializers/friendly_id.rb)
config.use :finders # 把註解取消,啟動自動查找功能
- 已經有資料,想直接更新 slug,就直接在 rails console 中執行:
Post.find_each(&:save)
先來談談iwndows裡檔案的保存屬性 利用滑鼠右鍵點選[內容]查看檔案的屬性時,在屬性可以看到[唯讀][隱藏]之外還可以點選[進階]按鈕, 其中「檔案已經可以開始封存」就是以前看到的「保存」屬性。 如果在DOS環境下指令attrib,檔名的前面出現「A」就是有「保存」屬性。 而「保存」屬性出現的時機是: 1. 檔案新建立 2. 檔案被變更過內容 因此系統給予此檔案A屬性,就等於告訴備份指令XCOPY或備份軟體,這個檔案需要被備份。 所以,我們可以透過這個屬性來進行檔案的增量式(Incremental)備份與差異式(Differential)備份。 將Files底下所有有異動過的檔案,複製到diff資料夾底下,並且取消此檔案的A屬性。 xcopy "C:\Files\*.*" c:\diff /s/d/y/M 如果我們在這個異動之後將diff資料夾內的所有東西都搬走,我們做的就是差異性備份,如果不搬走讓他一直累積就是增量式備份。 XCOPY 指令 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]\r\r [/EXCLUDE:file1[+file2][+file3]...] source 指定要複製的檔案。 destination 指定位置或者/以及新檔案的名稱。 /A 只複製設定成保存屬性的檔案,不要改變屬性的設定。 /M 只複製設定成保存屬性的檔案,並清除保存屬性。 /D:m-d-y 複製在指定日期當天或之後發生變更的檔案。如果沒有給日期, 只複製那些來源檔案日期比目的檔案日期為新的檔案。 /EXCLUDE:file1[+file2][+file3]... 指定檔案清單字串。每個
留言
張貼留言