Переменная Rails в модели не работает - PullRequest
1 голос
/ 22 августа 2009

В моем контроллере у меня есть это:

user.save
if user.leveled_up==true
    flash[:notice]="HOOOORAY!!!"
end

и в моей модели:

before_save :check_xp

# ....

def leveled_up=(leveled_up)
        @leveled_up=leveled_up
        if @leveled_up==true
            self.statpoints+=5 
            hp=max_hp
        end
    end

    def leveled_up
        @leveled_up
    end

    private 
    def check_xp
        leveled_up=false
        case self.xp
        when 0..999
            self.level=1
        when 1000..2999
            leveled_up=true if self.level==1
            self.level=2
        when 3000..4999
            leveled_up=true if self.level==2
            self.level=3
        when 5000..9999
            leveled_up=true if self.level==3
            self.level=4

# ...

        end

    end

Но это не работает. Даже если пользователь выровнял функцию, leveled_up возвращает false ...

Должно быть, я что-то делаю не так ...

Спасибо !!

1 Ответ

4 голосов
/ 22 августа 2009

здесь leveled_up = false не является вызовом метода. Вы фактически создали локальную переменную с именем leveled_up, она не имеет ничего общего с методом. чтобы вызвать метод, используйте

self.leveled_up
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...