让我解释一下我要做什么,然后问我的问题。我完全是 Ruby/Rails 的新手,但也是一位经验丰富的开发人员。
我想要什么:我想要开发人员、客户和管理员。我想要一个通用的身份验证机制。
似乎最好的方法:我认为最好的建模方式是让用户处理身份验证,然后进行某种继承或扩展每种用户类型的功能。
我正在尝试什么:我正在尝试一种称为多态关联(http://guides.rubyonrails.org/association_basics.html#polymorphic-associations)的东西,但我错过了一些东西。目前,如果我去/developers/new
,我会得到以下信息
in developers/_fields.html.erb where line #4 raised:
undefined method `name' for #<Developer:0x00000002bafd18>
user.rb片段
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation, :profile_id, :profile_type
has_secure_password
belongs_to :profile, :polymorphic => true
...
end
developer.rb片段
class Developer < ActiveRecord::Base
attr_accessible :skype_name
has_one :user, :as => :profile, :dependent => :destroy
accepts_nested_attributes_for :user
end
routes.rb片段
resources :developers
Developer#new控制器片段
def new
@developer = Developer.new
@developer.user = User.new
end
面向开发人员的new.html.erb片段
<div class="row">
<div class="span6 offset3">
<%= form_for (@developer) do |f| %>
<%= render 'fields', f: f %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
最后 _fields.html.erb片段
<%= render 'shared/error_messages' %>
<%= f.label :name %>
<%= f.text_field :name %>
...
我发现的最接近的问题是这个,但我从他们的答案中尝试了一些东西,但没有帮助。
我可以创建一个新的用户和开发人员,通过 rails 控制台相互链接,但我无法弄清楚我在网络上做错了什么。
任何帮助将非常感激。