Rails: дата публикации не обновляется правильно - PullRequest
0 голосов
/ 25 октября 2018

У меня есть базовая настройка блога в одном из моих приложений.У каждого blog есть логическое значение для published, а затем дата для published_on.published_on равен nil, пока не обновится с published как true.Логика контроллера выглядит следующим образом:

  def create
    @blog = Blog.new(blog_params)
    @blog.user_id = current_user.id
    if @blog.published
      @blog.published_on = Time.now
    end

    respond_to do |format|
      if @blog.save
        format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
        format.json { render :show, status: :created, location: @blog }
      else
        format.html { render :new }
        format.json { render json: @blog.errors, status: :unprocessable_entity }
      end
    end
  end

И для обновления ...

  def update
    if @blog.published && @blog.published_on.nil?
      @blog.published_on = Time.now
    end
    ...
  end

Однако функция обновления не обновляется, и я получаю ошибку undefined method 'strftime' for nil:NilClass, гдеон должен отображаться на странице show.Когда я rails c это published_on не сохранил.

Что я должен поставить вместо логики Time.now, которую я сейчас использую в контроллере.Он отлично работает с blog#create, но что-то не так в blog#update.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я думаю, что контроллер может быть неправильным местом.Вы можете реализовать обратный вызов after_save в вашей модели.Там вы можете установить отметку времени self.published_on = DateTime.now if self.published

after_save :set_published_at

def set_published_at 
  self.published_on = DateTime.now if self.published
end
0 голосов
/ 25 октября 2018

Вы пробовали DateTime.now вместо Time.now?Это разные классы, и я не уверен, что атрибут datetime можно напрямую назначить объекту Time.

@blog.published_on = DateTime.now
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...