【发布时间】:2011-10-04 18:48:54
【问题描述】:
我按照本教程在 devise+mongoid 中安装omniauth:
https://github.com/fertapric/rails3-mongoid-devise-omniauth/wiki/OmniAuth-Installation-Tutorial
我设计了 1.4.5 + omniauth 0.3.0 + rails 3.1.0。
我的 devise.rb 中有下一条信息:
config.omniauth :facebook, 'My_CONSUMER_KEY', 'MY_CONSUMER_SECRET', :scope => 'user_hometown, user_about_me, email'
在本教程中,此配置会创建一个 initializers/omniauth.rb 文件。
当我返回 facebook 回调时,我发现了这个错误:
NoMethodError in AuthenticationsController#create
undefined method `RandomString' for String:Class
app/models/user.rb:39:in `apply_trusted_services'
app/models/user.rb:23:in `apply_omniauth'
app/controllers/authentications_controller.rb:33:in `create_new_omniauth_user'
app/controllers/authentications_controller.rb:16:in `create'
我在 lib/string_extensions.rb 中也创建了一个文件,代码如下:
module StringExtensions
def self.included(base)
String.extend StringExtensions::ClassMethods
end
module ClassMethods
RAND_CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789"
def RandomString(len)
rand_max = RAND_CHARS.size
ret = ""
len.times{ ret << RAND_CHARS[rand(rand_max)] }
ret
end
end
end
我的问题是什么
【问题讨论】:
-
请注意,Ruby 中的方法名称不应使用大写字母。常量是
ALL_CAPS,类是CapsFirst,方法应该是lower_case。
标签: ruby-on-rails devise mongoid omniauth