开发者

one-to-one mapping with a devise model

I am trying to model a one-to-one association with my devise model and for some reason, I cannot access the edit path for the dependent model. Here is what I mean:

I have a CRUD controller for both a User and Credential model. User is a devise model.

class Credential < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_one :credential

  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable, :lockable and :timeoutable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :re开发者_如何学Pythonmember_me
end

I have a homepage under an action named Home in a controller named Welcome. My routes file is setup like so:

get "welcome/home"
devise_for :users
resources :users
resources :credentials

In the home view, upon creation of a new user, I try to update his credentials using

<% if user_signed_in? %>
    <% current_user.build_credential unless current_user.credential %>
    <% if current_user.sign_in_count < 5 %>
        <%= link_to "update profile", edit_credential_path(current_user.credential) %>
    <% end %>
<% end %>

I get an error on the link_to line saying:

No route matches {:action=>"edit", :controller=>"credentials", :id=>#<Credential id: nil, created_at: nil, updated_at: nil, first_name: nil, last_name: nil, user_id: 3>}

Please help.

Thanks.


Check your routes with: rake routes

It's also questionable if you should determine if the user is signed in in the view. This ofcourse is hard to say without seeing the controller.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜