我有一个带有状态列的ActiveRecord模型.当模型以状态更改保存时,我需要写入历史文件,更改状态以及由谁负责更改.我认为after_save回调会很好用,但我不能使用status_changed?用于确定执行历史写入的动态方法.如果模型已保存但状态未更改,我不想写入历史记录.我现在处理它的唯一想法是使用实例变量标志来确定after_save是否应该执行.有任何想法吗?
我正在寻找一种方法来解决以下问题:
Event模型datetime中的两个属性:
start_at: datetime
end_at: datetime
Run Code Online (Sandbox Code Playgroud)
我想使用3个字段以表格形式访问它们:
event_date
start_time
end_time
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是如何将实际和虚拟属性保持在"同步",以便可以通过表单和/或直接通过start_at&更新模型end_at.
class Event < ActiveRecord::Base
attr_accessible :end_at, :start_at, :start_time, :end_time, :event_date
attr_accessor :start_time, :end_time, :event_date
after_initialize :get_datetimes # convert db format into accessors
before_validation :set_datetimes # convert accessors into db format
def get_datetimes
if start_at && end_at
self.event_date ||= start_at.to_date.to_s(:db) # yyyy-mm-dd
self.start_time ||= "#{'%02d' % start_at.hour}:#{'%02d' % start_at.min}"
self.end_time ||= "#{'%02d' % end_at.hour}:#{'%02d' % end_at.min}"
end
end
def set_datetimes
self.start_at …Run Code Online (Sandbox Code Playgroud) 自从Rails 4和Postgres 9开始array column实施.我使用阵列列来存储类似也尝试tags或categories,我不经常改变的,它被用作参考/刻面进行搜索.我之前提出了另一个关于使用数组列进行查询的问题,其中一个答案提到永远不要使用数组来存储数据.我很困惑,如果建议永远不要使用它,为什么会创建数组列.所以我的问题是
什么时候在Rails中使用数组列和模型关联被认为更好?