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