如何在rails中存储对象的临时属性

时间:2014-09-28 14:28:30

标签: ruby-on-rails state-machine

在我的应用程序中,我通过指定用户对象将进入updated_state的一些信息来拥有用户模型。一周之后,我想要我的对象进入updated_state的日期。而且我想每周使用这个值。(增加他们的工作时间。)没有在数据库中存储值如何实现这个?

state_machine :state, :initial => :not_initialized do
state :not_initialized, :initialized_personal_details, :initialized_office_details,
      :updated_state

event :finish_personal_details do
  transition :not_initialized => :initialized_personal_details
end

event :start_office_details do
  transition :initialized_personal_details => :initialized_office_details
end

event :finish_office_details do
  transition :initialized_office details => :updated_state
end

2 个答案:

答案 0 :(得分:1)

您不能在不将数据存储到某处的情况下使用持久数据(即会话中未使用的数据)。你有多种选择:

  • 将它们存储在数据库中。似乎是最合理的选择。您可以将它们存储在对象中,也可以创建不同的表/数据库

  • 将它们存储在不同的数据存储中。为什么不使用redis,可以成为普通数据库的一个很好的补充,具有一些很好的功能。

  • 将其存储在内存中。复杂而不推荐,特别是如果你想成为"防撞"

其他选项:文件,消息队列,.....

如果不确切知道为什么需要这个,以及数据库无法使用的原因,那就是我能说的最好的

答案 1 :(得分:0)

我使用attr_accessor解决了这个问题。