我在我的 Rails 应用程序中使用设计进行身份验证。目前我有两个模型:
Users
Accounts
账户属于用户,用户拥有一个账户。
我的帐户模型包括一个名称和一个子域。我的用户模型有电子邮件和密码
在 account.rb 我有:
class Account < ActiveRecord::Base
attr_accessible :name, :subdomain
belongs_to :user
end
在 user.rb 中:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :Trackable
attr_accessible :email, :password, :password_confirmation, :account_attributes, :account
has_one :account
end
用户登录后,我需要从 Account 中获取名称和 sudbomain 等。
在我的 application_controller.rb 我有:
def after_sign_in_path_for(resource)
if resource.is_a?(User)
user_path
else
super
end
end
def current_account
@iduser = session[:user_id]
@current_account ||= Account.find(@iduser) if @iduser
end
helper_method :current_account
在 layout.html.erb 中
<% if current_account %>
<%= current_account.name %> <%= current_account.subdomain %>
<% end %>
<% if user_signed_in? %>
|
<%= link_to destroy_user_session_path, :class => "btn btn-mini btn-danger", :method => :delete do %>
<i class="icon-off icon-white"></i> logout
<% end %>
<% end %>
但是,名称和子域不显示。我怎样才能让它们显示?