根据另一个属性在后台设置模型属性?

时间:2008-12-24 15:58:56

标签: ruby-on-rails

我有一个包含多个属性的Auction模型,其中两个是 current_auction:boolean scheduled_start:datetime 。当scheduled_start成为当前时间时,如何使布尔值(默认为false)变为真?如果您需要更多信息,请告诉我。我假设我需要使用脚本/跑步者,但没有经验。

2 个答案:

答案 0 :(得分:0)

我不会将current_auction存储为属性。 Current_auction是一个取决于scheduled_start时间与当前时间的状态。不要将它添加到数据库中,而是将其作为模型添加,将scheduled_start与当前时间进行比较,并根据计算返回true / false。

如果您需要根据当前是否为当前进行选择,请使用取决于scheduled_start时间而非当前/非当前时间的选择逻辑。

答案 1 :(得分:0)

很可能,正如tvanfosson所说,你根本不想在数据库中使用它。

但是如果你在数据库中需要它(比如你需要用Sphinx搜索它),你可能需要一个数据库触发器。有关一些信息,请参阅MySQL 5.0 Reference Maunual(假设您使用的是MySQL)。

对于需要更复杂逻辑的东西,我会设置一个排队系统,并在队列中添加一条消息来更新after_save挂钩中的该属性。这样它会触发更新,但实际上不会等到更新完成后再返回给用户。我有一个question on asynchronous queues,最后我使用了Starling和Workling。