模型中的Rails变量不起作用

时间:2009-08-21 21:59:13

标签: ruby-on-rails variables model

在我的控制器中,我有这个:

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 个答案:

答案 0 :(得分:4)

这里leveled_up = false不是方法调用。您实际上创建了一个名为leveled_up的局部变量,它与该方法无关。 要调用该方法,请使用

self.leveled_up