2012-08-13 82 views
0

我的应用程序有一个类型,其通过流始终携带并且类型编号为1,2,3或4。使用before_save存储一个值在db

以我application_controller.rb,我有以下代码:

before_filter :record_type

,然后在下面,在protected

def record_type 
field should go here = @type 
end 

我很困惑如何注意User表中的字段。这只是User.type = @type

+0

你可以将它存储在会话中吗? (User.type = @type没有多大意义)。你为什么要将应用类型存储在用户表中?什么是“类型”? – Robin 2012-08-13 22:08:08

+0

它已存储在会话中,我已将它添加到控制器,以便:在User.new中键入type = @type,该工作,是吗? – 2012-08-13 22:10:06

+1

你应该更清楚地解释你的最终目标,以获得良好的答案。 – Robin 2012-08-13 22:24:10

回答

0

您必须首先获得您想要编辑的特定记录。如果它发送给用户,如果你有像current_user这样的辅助方法(设计和类似的认证系统提供),你可以使用它。

你只想做current_user.type = @type

但是,这是不是真的与你现在有什么before_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 

或类似的东西。

我知道这很粗糙,但我希望这可以指引您朝着正确的方向发展。