考虑一个模型用户:
User(id: integer, name: string, email: string, status: string)
当我构建应用程序时,状态是数据库中的一个字段。但是新的要求意味着改变,因此在某些情况下动态计算状态。例如,在星期天,如果他们的姓氏以 A 开头,那么他们的状态是“不正常”。
我想将此功能封装在 User 模型中,如下所示:
Class User < ActiveRecord::Base
def status
if is_sunday && last_name.starts_with('A')
return 'not ok'
else
return status
end
end
end
做这个的最好方式是什么?如果上面的代码确实有效,那么用方法覆盖数据库中的字段似乎是不好的做法。
或者,我可以创建一个方法get_status
来使用上述代码。但在这种情况下,我需要更改status
整个应用程序中的每个引用。这听起来不太好。