在使用devise gem进行用户注册时,在同一模型中运行另一个操作

时间:2012-04-26 13:42:02

标签: ruby-on-rails devise

我在

中有一个动作
class User < ActiveRecord::Base
  def follow_user(following_id)
      Friendship.create(:following_id => following_id, :follower_id => self.id)
  end
end

我需要运行此操作,以便我可以让用户在注册时默认关注用户...希望这是有意义的。

1 个答案:

答案 0 :(得分:0)

您应该能够使用回调,这是一种在对象生命中的特定点调用的方法,例如after_create,在您的用户模型上实现此目的。

您可以在Rails Guides上阅读有关回调的更多信息。基本上,您想在User模型中说出类似的内容。

after_create: :follow_user

然后编写follow_user方法以达到您想要的效果。每次创建User时,都会运行follow_user。根据您的代码,我假设follow_user是一个用户跟随另一个用户时使用的方法,而不仅仅是在创建时(因此传递参数)。为了避免在验证中传递参数,我将设置一个默认参数,以便在不传递参数的情况下调用该方法时,将遵循“默认”用户。像这样:

def follow_user(following_id = 1)
  code
end