我想让Devise在我的网站上创建子域名.
现在,我有两个型号:
公司:A Company可以直接在网站上注册,登录后可以邀请其员工.当公司注册时,我想要创建一个独特的子域名(例如example.com => techcraz.example.com.)
员工:Employee只有在收到邀请链接时才能注册.
我想要的是什么:
Companies和的单一登录页面Employees.我是Rails的新手.请帮忙!
提前致谢!
我在Ubuntu系统上工作(16.04).
我的问题是每当我设置任何rails项目并尝试运行rails s然后我得到'不兼容的库版本'错误sqlite3如下所示.
/home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/activesupport-4.0.0/lib/active_support/values/time_zone.rb:282: warning: circular argument reference - now
/home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:6:in `require': incompatible library version - /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3/sqlite3_native.so (LoadError)
from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:6:in `rescue in <top (required)>'
from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:2:in `<top (required)>'
from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:77:in `require'
from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:77:in `block (2 levels) in require'
from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:72:in `each'
from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:72:in `block in require'
from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:61:in `each'
from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:61:in `require'
from /usr/lib/ruby/vendor_ruby/bundler.rb:99:in `require'
from /home/jiggs/sites/albumriverfinal/config/application.rb:7:in `<top (required)>'
from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
from bin/rails:4:in `require' …Run Code Online (Sandbox Code Playgroud) 哪一个最适合表现?
1)订单(数据库端计算)
2)sort_by(Ruby方面计算)
按照我的想法sort_by应该快order.因为order从数据库那边进行所以sort_by在得到结果之后变得慢,并且在红宝石一侧进行但是因为看这个结果所以混乱了.
=>正常查询(需要更多时间order和sort_by查询): -
> User.all
SELECT "users".* FROM "users"
#<Benchmark::Tms:0x000000089e4398 @cstime=0.0, @cutime=0.0, @label="", @real=6.515499990200624e-05, @stime=0.0, @total=0.0, @utime=0.0>
Run Code Online (Sandbox Code Playgroud)
=>使用order基准测试查询(比普通查询和sort_by查询花费更少的时间): -
> User.order(:name) # `order` query is perform in sql so should take more time
User Load (0.6ms) SELECT "users".* FROM "users" ORDER BY "users"."name" ASC
#<Benchmark::Tms:0x00000007ec48c8 @cstime=0.0, @cutime=0.0, @label="", @real=0.00014305600052466616, @stime=0.0, @total=0.0, @utime=0.0>
Run Code Online (Sandbox Code Playgroud)
=>使用sort_by基准进行order查询(在查询时采用更多查询,比普通查询更少的时间): -
> User.all.sort_by(&:name) # …Run Code Online (Sandbox Code Playgroud) 我想重写门卫令牌错误响应主体方法。目前,当我在 url 处传递错误的用户名和密码http://localhost:3000/oauth/token时,它会给出以下错误消息。
对于未经授权的默认门卫响应:
{
"error": "invalid_grant",
"error_description": "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}
Run Code Online (Sandbox Code Playgroud)
但我想要为我的 API 提供不同的错误消息结构。如下所示。
我的预期回应是:
{
"status_code": 401,
"message": "Invalid username or password."
"result": []
}
Run Code Online (Sandbox Code Playgroud)
我遵循这里的官方文档并尝试在下面完全满足我的期望。
尝试自定义响应:
在下面lib/doorkeeper/oauth/error_response.rb
module Doorkeeper
module OAuth
class ErrorResponse
def body
{
"status_code": 401,
"message": "Invalid username or password."
"result": []
}
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
门卫配置: …
ruby ×3
activerecord ×1
devise ×1
doorkeeper ×1
oauth ×1
postgresql ×1
sqlite ×1
sqlite3-ruby ×1
subdomain ×1