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