Rails - friendly_id: как я могу отформатировать параметр friendly_id как datetime? - PullRequest
1 голос
/ 02 ноября 2011

Я хотел бы использовать friendly_id с указанием даты и времени в таком виде: friendly_id: дата

есть ли способ настроить формат для параметра friendly_id (здесь: дата) для изменения отображения? (здесь лучше, чем "2010-05-09 00:00:00 UTC")

1 Ответ

1 голос
/ 03 марта 2012

Если у вас есть дополнительный столбец выше стандартных созданных_ и обновленных_ответов, вы можете использовать его для создания friendly_id.

Он не будет работать со стандартным столбцом create_at, так как он заполняется после обратного вызова friendly_id, означающего, что запись на самом деле не создана.

Если у вас есть столбец, скажем ... report_date с типом даты и времени, тогда вы можете сделать это ...

# app/models/report.rb  ## using friendly_id 3.x
class Report < ActiveRecord::Base
  # I recommend using a cache column as well.
  has_friendly_id :report_slug, :use_slug => true, :cache_column => 'cached_slug'
  before_create :set_report_date

  def set_report_date
    self.report_date = Time.now
  end

  def report_slug
    report_date.strftime('%d-%m-%Y')
  end
end

Или как в FriendlyId 4.x

class Home < ActiveRecord::Base
  extend FriendlyId
  friendly_id :report_slug, :use => :sluggable
  before_create :set_report_date

  def set_report_date
    self.report_date = Time.now
  end

  def report_slug
    report_date.strftime('%d-%m-%Y')
  end
end

Все, что вам нужно, это строковый столбец с именем slug в вашей модели, если вы используете 4.x

Используя before_create и метод set_report_date, вы можете убедиться, что значение report_date заполняется только один раз (при создании).

Некоторые опции для strftime можно найти здесь: https://gist.github.com/1965714

Надеюсь, это поможет.

...