module Foo
attr_accessor :val
end
module Bar
def bar
val = 50
end
end
class FooBar
include Foo
include Bar
end
fb = FooBar.new
puts fb.bar # 50
puts fb.val # nil
我想从Bar内改变Foo的“val”值。如何从另一个包含的模块访问包含模块的方法?
就这么你知道,我正在尝试这样做,因为我想通过Facebook上的Canvas应用程序在Clearance(0.8.2(旧,我知道))中添加用户身份验证。我想改变的变量是https://github.com/thoughtbot/clearance/blob/b8ccca00d91cb336e044b76b5c6ae1d8de9d2d8d/lib/clearance/authentication.rb#L25。
该模块被纳入ApplicationController中,和我包括另一个模块之后(FacebookAuthenticationHelper),做类似
def authenticate_facebook
current_user ||= facebook_user if coming_from_facebook?
end
我很想知道,如果有更好的方式来做到这一点。我没有使用OAuth,我只是将Facebook的user_id发送到我的应用程序,从signed_request发送到我的数据库。
谢谢!
我相信'Bar = bar'中的'val = 50'会创建一个局部变量。如果使用'self.val = 50'代替它是否工作? –
你是对的!这样可行。谢谢!你想回答这个问题,所以我可以接受吗? –
会做。我正在寻找我学到的链接,但我似乎无法再找到它......也许我会写出新的权威指南! –