2009-08-22 6 views

Antwort

1

Sie müssen den Wert an einem bestimmten Punkt in Ihr Modell eingeben und dann speichern, wenn Sie regelmäßig darauf zugreifen müssen.
Modelle dürfen keine Daten von Controllern abrufen - dies würde in der Konsolenansicht, beim Komponententest und in einigen anderen Situationen Probleme verursachen.

Die einfachste Antwort ist so etwas wie diese:

class User 
    attr_accessor :facebook_name 
    before_create :update_full_name 

    def calculated_full_name 
     facebook_name || "not sure" 
    end 

    def update_full_name 
     full_name ||= calculated_full_name 
    end 
end 


class UsersController 
    def create 
     @user = User.new params[:user] 
     @user.facebook_name = facebook_session.user.name 

     @user.save 
    end 
end 
+0

Vielen Dank für Ihre Antwort Austin, in dieser Situation würde dieser Code funktionieren, wenn Sie so etwas wie dies haben: x = User.find (1) x .full_name Ich bin mir nicht sicher, ob die create-Methode jemals so genannt wird. Dank –

+0

Ich habe meinen Code geklärt, damit Sie wissen, wie Sie den facebook_name in der Datenbank speichern. Jetzt sollte es funktionieren, um es zu erhalten, wie Sie vorschlagen. – austinfromboston

Verwandte Themen