Ruby on rails 如何在ActiveRecord对象中定义触发器条件?

Ruby on rails 如何在ActiveRecord对象中定义触发器条件?,ruby-on-rails,ruby,activerecord,model,badge,Ruby On Rails,Ruby,Activerecord,Model,Badge,我想实行徽章制度;用户在做诸如“提问”、“投票”之类的事情时会获得徽章 然而,我正在寻找一个解决方案来定义授予徽章的条件。一个解决方案是我使用一个观察者模型来触发徽章。但我会用一种更优雅的方式来定义授予徽章的条件,而不是在观察者模型中定义 示例: 用户提出了五个问题,每个问题的评分至少为五分。在代码中,我将定义如下条件: user.questions.keep|u如果{q | q.rating>=5}.size>=5 但是我想在badge模型对象中定义这个条件。你知道什么是好方法吗 我意识到这一

我想实行徽章制度;用户在做诸如“提问”、“投票”之类的事情时会获得徽章

然而,我正在寻找一个解决方案来定义授予徽章的条件。一个解决方案是我使用一个观察者模型来触发徽章。但我会用一种更优雅的方式来定义授予徽章的条件,而不是在观察者模型中定义

示例:

用户提出了五个问题,每个问题的评分至少为五分。在代码中,我将定义如下条件:

user.questions.keep|u如果{q | q.rating>=5}.size>=5

但是我想在badge模型对象中定义这个条件。你知道什么是好方法吗

我意识到这一点;它不适合我的应用,否则我现在就用它了

我希望你能帮助我。

我会调查的


使用before_save回调可以定义一个包含上述一行代码的方法,并在每次将用户保存到数据库时对其进行测试

您可以添加before save和update处理程序。您能解释一下为什么该引擎不适合您的需要吗?问题是我认为此gem不提供级别。但我错过了这一部分,现在我在详细调查宝石后发现了它。所以我的问题现在已经解决了。这是一个很好的解决我问题的方法。非常感谢。但我会使用优点并尝试,如果它适合,因为我错过了一部分,它也支持水平。在检查宝石后,我考虑你的方法,因为宝石不够灵活,为我的模型结构。