2015-05-06 2 views
0

Как использовать with_options для условной проверки?Как использовать with_options для условной проверки

Мой код

with_options if: (AppUser::User.creator=="is_admin") do |admin| 
    admin.validates :first_name, :presence => true 
    admin.validates :last_name, :presence => true 
end 

Я уже установлен creator метод в контроллере приложения.

before_action :set_global_user 

def set_global_user 
    if current_admin 
    AppUser::User.creator= "is_admin" 
    elsif current_user 
    AppUser::User.creator= "is_user" 
    else 
    AppUser::User.creator=nil 
    end 
end 

, но я получаю

неопределенный метод `Validate» для ложных значений: FalseClass

что не так с этим кодом.

ответ

0

потому

 
(AppUser::User.creator == "is_admin")` 

не возвращает объект, но это логическое.

Попробуйте это (внутри вашей модели):

class User < ActiveRecord::Base 
    with_options if: (AppUser::User.creator == "is_admin") do 
    validates :first_name, presence: true 
    validates :last_name, presence: true 
    end 
end

P.S: Я рекомендую использовать DEViSE драгоценный камень, чтобы управлять типами пользователей, как этот: devise and multiple “user” models.