2009-03-31 25 views
6

Sorularım bu AR açısından ve onun örnek değişkenRaylar Active kayıt Nesne Değişkenleri

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 

Bu örnek değişkenleri örneğinin varlığı ile onların değerlerini tutacak benim anlaşılmasıdır @saved.

Bu AR'yi denetleyicimde kullanırken kaydedildi mi? her zaman false değerini döndürür ..

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

Bu örnek değişkenler açısından ne eksik? Teşekkürler

cevap

7

Örnek sınıfını @saved içinde bir sınıf yöntemini kullanıyorsunuz, @saved var sonra sınıfına ait, örneklerine değil, bu yüzden #saved gibi bir örnek yönteminden çağrı yapamazsınız.

ne yapabileceğini, olduğunu, sınıf eklenti üstündeki:

attr_accessor :saved

ve create_phone_number yöntemi içinde

, değiştirin:

@saved = true

ile:

@new_phone.saved = true

o zaman

+0

mükemmel çalışmalı sorun buydu. Bunu bana açıkladığın için teşekkür ederim. – stellard

İlgili konular