考虑一个模型用户:在Rails模型中“重载”一个字段的最佳方式是什么?
User(id: integer, name: string, email: string, status: string)
当我构建的应用程序,地位是在数据库中的字段。但是新的需求意味着更改,以便在某些情况下动态计算状态。例如,在星期日,如果他们的姓氏以A开头,那么他们的状态是“不好”。
我想类似以下封装在用户模式这一功能:
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
的每个引用。这听起来不太好。
fwiw,我完全可以用这种方法作为解决方案。我认为添加'get_status'更令人困惑,因为您有点创建第二种检索用户状态的方法。 – thewillcole 2012-04-06 22:21:10