如何让用户在注册时自动关注管理员用户

目前我允许用户在我的rails应用程序上跟随彼此(类似于twitter)

如果注册该网站的新用户自动关注管理员用户,我会很高兴。

Similar to how MySpace use to automatically make Tom your first friend 

下面是我用来创建新用户并允许用户互相关注的代码。(我知道这是一个非常广泛的问题,但是……)

(有人可以指出我正确的方向,我可以如何开始。我需要在我的模型中创建一个方法….或者向控制器添加代码吗?)

新手Rails请帮助)… 🙂

用户控制器

 class UsersController  100).search(params[:search]) end def destroy User.find_by_username(params[:id]).destroy flash[:success] = "User destroyed." redirect_to users_url end def create @user = RegularUser.new(params[:regular_user]) if @user.save UserMailer.registration_confirmation(@user).deliver UserMailer.welcome_user(@user).deliver sign_in @user flash[:success] = "Welcome to the ClickOnComics!" redirect_to (publishers_path) else render 'new' end end private def admin_user redirect_to(root_path) unless current_user.admin? end def follow_admins admins = User.find_by_admin(true) admins.each do |admin| self.follow!(admin) end end class RelationshipsController < ApplicationController before_filter :current_user respond_to :html, :js def create @user = User.find(params[:relationship][:followed_id]) current_user.follow!(@user) respond_with @user end def destroy @user = Relationship.find(params[:id]).followed current_user.unfollow!(@user) respond_with @user end end 

楷模

 class Relationship < ActiveRecord::Base attr_accessible :followed_id belongs_to :follower, class_name: "User" belongs_to :followed, class_name: "User" validates :follower_id, presence: true validates :followed_id, presence: true end class User < ActiveRecord::Base attr_accessible :name, :email, :password, :password_confirmation has_many :relationships, foreign_key: "follower_id", dependent: :destroy has_many :followed_users, through: :relationships, source: :followed has_many :reverse_relationships, foreign_key: "followed_id", class_name: "Relationship", dependent: :destroy has_many :followers, through: :reverse_relationships, source: :follower after_create :follow_admins def follow_admins admins = User.find_all_by_admin(true) admins.each do |admin| self.follow!(admin) end end def following?(other_user) relationships.find_by_followed_id(other_user.id) end def follow!(other_user) relationships.create!(followed_id: other_user.id) end def unfollow!(other_user) relationships.find_by_followed_id(other_user.id).destroy end end 

我使用本教程帮助我在User模型中使用boolean admin属性建立特权管理用户

http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#sec-administrative_users

SCHEMA

  create_table "users", :force => true do |t| t.string "name" t.string "email" t.string "role" t.string "username" t.timestamp "created_at", :null => false t.timestamp "updated_at", :null => false t.boolean "admin", :default => false t.string "password_reset_token" t.timestamp "password_reset_sent_at" end 

我是否需要创建一个定义user_admin的方法?

在user.rb中添加after_createfilter

 after_create :follow_admin! def follow_admin! relationships.create!(followed_id: admin_user.id) end 

sign_in add之前create动作

 @user.follow! admin_user 

你需要先以某种方式获取管理员用户。 好主意是follow!following?unfollow! 接受id或object的方法

 def follow!(user_or_id) id = (user_or_id.is_a?(User) ? user_or_id.id : user_or_id) relationships.create!(followed_id: id) end