目前,我允许用户在我的 rails 应用程序(类似于 twitter)上互相关注。
如果注册该站点的新用户自动关注管理员用户,我会很高兴。
Similar to how MySpace use to automatically make Tom your first friend
下面是我用来创建新用户并允许用户互相关注的代码。(我知道这是一个非常广泛的问题,但是.....)
(有人可以指出我如何开始的正确方向。我需要在我的模型中创建一个方法......还是向控制器添加代码?)
Rails 新手请帮忙)... :)
用户控制器
class UsersController < ApplicationController
  before_filter :admin_user,     only: [:destroy]
  respond_to :html, :js
  def new
    @user = RegularUser.new
  end
  def index
    @users = User.paginate(page: params[:page], :per_page => 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 模型中建立具有布尔管理属性的特权管理用户
http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#sec-administrative_users
架构
  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 的方法吗?