【发布时间】:2009-08-22 02:09:37
【问题描述】:
我正在使用 facebooker gem,它在控制器范围内创建一个名为 facebook_session 的变量(这意味着当我可以从 userscontroller 部分调用 facebook_session.user.name 时可以)。但是,当我重写 full_name 函数(位于我的模型中)时,我无法访问 facebook_session 变量。
【问题讨论】:
标签: ruby-on-rails scope
我正在使用 facebooker gem,它在控制器范围内创建一个名为 facebook_session 的变量(这意味着当我可以从 userscontroller 部分调用 facebook_session.user.name 时可以)。但是,当我重写 full_name 函数(位于我的模型中)时,我无法访问 facebook_session 变量。
【问题讨论】:
标签: ruby-on-rails scope
您必须在某个时候将值传递到模型中,然后在需要定期访问时将其存储。
模型不允许从控制器中提取数据——这会破坏控制台视图、单元测试和其他一些情况。
最简单的答案是这样的:
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
【讨论】: