使用布尔输入更新datetime属性

我有一个模型Story,为此我要添加一个pinned_at属性。我希望用户能够选择是否需要将故事固定在索引页面的顶部,但不能设置日期时间值,因为设置时它应该始终是当前日期时间。

我的想法是

= f.check_box :pinned_at,value: DateTime.now

但是该值似乎没有设置。谁有想法?首先,它不是简单的布尔属性的原因是我想根据故事是否固定以及故事的创建日期对故事进行排序。我认为Rails并不是按布尔值排序的好方法吗?

owenlixuan 回答:使用布尔输入更新datetime属性

只需将datetime列与单独的setter / getter一起使用:

class Story < ApplicationRecord
  def pinned
    pinned_at.present?
  end
  alias_method :pinned?,:pinned

  def pinned=(value)
    if value
      self.pinned_at = Time.current unless pinned? 
    else
      self.pinned_at = nil
    end
  end
end

= f.check_box :pinned
本文链接:https://www.f2er.com/2636739.html

大家都在问