当前位置:  开发笔记 > 编程语言 > 正文

Rails活动记录实例变量

如何解决《Rails活动记录实例变量》经验,为你挑选了1个好方法。

我的问题是关于这个AR及其实例变量@saved

 class PhoneNumber < ActiveRecord::Base
has_one :user
validates_presence_of :number

def self.create_phone_number( user, phone_hash )
    @new_phone = PhoneNumber.new(phone_hash)
    @user = user
    PhoneNumber.transaction do
        @user.phone_numbers << @new_phone
        @new_phone.save!
        @user.save!
    end
    @saved = true
    return  @new_phone
rescue ActiveRecord::RecordInvalid => invalid
    @saved = false
    return  @new_phone
end

def saved?
    @saved ||= false
end
 end

我的理解是,实例变量将通过实例的存在来保持它们的值.

在我的控制器中使用此AR时,保存了吗?总是返回false ..

@phone_number = PhoneNumber.create_phone_number(@active_user, params[:phone_number])
puts "add_phone_number"
if @phone_number.saved? => always false

关于这些实例变量我缺少什么?谢谢



1> Maximiliano ..:

你在类方法中使用实例变量@saved,@saved var然后属于类,而不属于它的实例,所以你不能从像#saved?这样的实例方法调用它.

你能做什么,是在课堂顶部添加:

  attr_accessor :saved

并在create_phone_number方法内,替换:

  @saved = true

有:

  @new_phone.saved = true

那它应该工作

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有