2016-03-25 2 views
0

Я новичок в рельсы и ваш совет будет высоко ценитсяДействия Создано - автоматически устанавливая статус созданного пользователя принятого - Rails 4

цели: я пытаюсь установить статус пользователей, администраторы в " принято» при создании

  • таблица users в схеме имеет столбцы status & category_role_id
  • category_role_id 1 являются admins и category_role_id 2 являются primary admins
  • в настоящее время, когда пользователь создал (признаки на счет) их статус автоматически устанавливается на nil

может один любезно сообщить мне, как я могу установить статус создан пользователь, который является администратором в «принято» (так что, когда они создают счет/подписаться их status выскажет "accepted", а не nil)

схемы

create_table "userrs", force: true do |t| 
    t.string "status" 
    t.integer "category_role_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "category_roles", force: true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

модели

user.rb 
User belongs_to :category_role 

category_role.rb 
CategoryRole has_many :users 

users_controller.rb

def create 
    @user = User.new(user_params) 
    respond_to do |format| 
     if @user.save 
     format.html { redirect_to(setting_user_path(current_userr), notice: 'User was successfully created.') } 
     else 
     format.html { render action: "new" } 
     end 
    end 
    end 

я понятия не имею, как d о это - я пробовал ниже, но я считаю, что это неправильно

def create 
    @userr = Userr.new(userr_params) 
    if @user.category_role_id == nil 
     @user.category_role_id == 1 
     @user.save 
    end 
    respond_to do |format| 
     if @user.save 
     format.html { redirect_to(setting_usrr_path(current_user), notice: 'User was successfully created.') } 
     else 
     format.html { render action: "new" } 
     end 
    end 
    end 

ответ

2

Добавить обратный вызов User модели. Отдельно выглядит, что ваша таблица users ошибочно написана в вашей миграции.

class User < ActiveRecord::Base 

    before_create :set_admin_as_accepted 

    def admin? 
    [1,2].include?(category_role_id) 
    end 

    def set_admin_as_accepted 
    self.status = 'accepted' if admin? 
    end 

end 
+0

awesome awesome !!!! спасибо, много! – ARTLoe

Смежные вопросы