2009-08-22 2 views
0

Я использую genc facebooker, который создает переменную, называемую facebook_session, в области контроллера (это означает, что когда я могу вызвать facebook_session.user.name из раздела userscontroller, это нормально). Однако, когда я переписываю функцию full_name (расположенную в моей модели), я не могу получить доступ к переменной facebook_session.Доступ к переменной, объявленной в контроллере, из модели

ответ

1

Вам нужно будет передать значение в вашу модель в какой-то момент, а затем сохранить его, если вам нужно регулярно обращаться к нему.
Модели не могут извлекать данные из контроллеров - это может повредить вещи в режиме консоли, модульном тестировании и в нескольких других ситуациях.

Самый простой ответ что-то вроде этого:

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

Спасибо за ваш ответ Остин, в этой ситуации будет этот код работать, если вы что-то вроде этого: х = User.find (1) х .full_name Я не уверен, что метод create так называется. Спасибо –

+0

Я уточнил свой код, чтобы вы знали, как сохранить facebook_name в базе данных. Теперь он должен работать, чтобы получить его, как вы предлагаете. – austinfromboston

Смежные вопросы