使用before_save在db中存储值

时间:2012-08-13 22:00:59

标签: ruby-on-rails database

我的应用程序有一个类型,它通过流程一致地携带,类型编号为1,2,3或4.

在我的application_controller.rb中,我有以下代码:

before_filter :record_type

然后低于protected

def record_type
 field should go here = @type
end

我对如何记下User表中的字段感到困惑。它只是User.type = @type

1 个答案:

答案 0 :(得分:0)

您必须先获取要编辑的特定记录。如果它继续用户,如果你有一个帮助方法,如current_user(设计和类似的身份验证系统提供),你可以使用它。

你只想做current_user.type = @type

但这不是真正的on_save与你现在拥有的。如果您在保存用户记录时尝试存储它,请将过滤器移动到用户模型。做点什么

before_save :add_type_to_user

def add_type_to_user
   self.type = your_type_value_here
end

如何获得模型的类型值将取决于您从何处获取它。您可以在application_controller中使用before_filter来设置@@变量。当我在模特中时,我有时会使用这个技巧来获取当前用户。您只需要为@@变量创建一个getter和setter。你只是做了类似的事情:

self.type = User.get_current_type

或类似的东西。

我知道这很粗糙,但我希望这能指出你正确的方向。