Доступ к переменной, объявленной в контроллере из модели - PullRequest
0 голосов
/ 22 августа 2009

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

1 Ответ

1 голос
/ 22 августа 2009

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

Самый простой ответ примерно такой:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...