从模型访问控制器中声明的变量

时间:2009-08-22 02:09:38

标签: ruby-on-rails scope

我正在使用facebooker gem在控制器范围内创建一个名为facebook_session的变量(这意味着当我可以从userscontroller部分调用facebook_session.user.name时)。但是,当我重写full_name函数(位于我的模型中)时,我无法访问facebook_session变量。

1 个答案:

答案 0 :(得分: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