0
我的Rails应用程序有一些出租车运营商和他们有一些出租车,他们的关系如下:为什么Devise身份验证的嵌套资源不起作用?
class Operator < ActiveRecord::Base
has_many :cabs
end
我要补充的认证体系,以创建为每个操作员管理员。我正在使用Devise。因为我需要创建路径:运营商/:operator_id /管理员/ sign_up,我产生的管理模式,如:
rails generate devise Admin
然后我修改了路线,以获得上述路径:
scope "operators/:operator_id" do
devise_for :admins
end
运行耙路线表明我正在获取所需的网址。我还修改了模型:
class Admin < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :operator
end
class Operator < ActiveRecord::Base
has_many :admins
end
我还修改了色器件/会话/ new.html.irb包括用于operator_id一个隐藏字段:
H2>登录
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div><%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password, autocomplete: "off" %></div>
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end -%>
<% f.hidden_field :operator_id, :value => params[:operator_id] %>
<div><%= f.submit "Log in" %></div>
<% end %>
<%= render "devise/shared/links" %>
最后,为了在访问驾驶室详细信息之前验证管理员身份,我向cabs_controller添加了以下内容:
before_filter:authenticate_admin!
问题是我无法提交管理员表单。当我提交管理员凭证时,表单不会回应。我哪里错了?
依然不工作:( – 2014-11-24 13:52:31
重新启动服务器....它现在似乎工作...但一个新的管理员没有得到与它关联的operator_id – 2014-11-24 14:39:41
这意味着管理员可以访问另一个驾驶室操作员的驾驶室,我绝对买不起! – 2014-11-24 14:57:21