未知属性:admin_id,具有嵌套视图和has_many关系

Ste*_*hen 2 ruby ruby-on-rails ruby-on-rails-3.2

基本上我的问题是,当我在rails应用程序中尝试使用嵌套视图时,我需要存储页面的一般用户和管理员.两者都包含我需要知道谁是谁的相同信息.我有一个团队模型:

class Team < ActiveRecord::Base
  attr_accessible :auth_token, :team_name, :template
  has_many :events, :dependent => :destroy
  has_many :users
  has_many :admins, :class_name => "User", :foreign_key => 'admin_id'
  accepts_nested_attributes_for :admins
end
Run Code Online (Sandbox Code Playgroud)

我的Teams表的架构包含一个admin_id字段.我不明白为什么我会收到这个错误.我已经尝试了相当多的谷歌搜索和搜索论坛,尽管发现了一些类似的问题,我找不到所有相同的问题组合.

提前致谢.

编辑 用户模型:

class User < ActiveRecord::Base
    require 'digest/sha1'
    attr_accessor :pre_pass
    belongs_to :team
    attr_accessible :name, :player
    attr_protected :password
    validates :name, :presence => true
    validates :pre_pass, :presence => true
    before_save :encrypt_pass
    after_save :clear_pre_pass
end
Run Code Online (Sandbox Code Playgroud)

团队/新视图

<%= form_for(@team) do |f| %>
  <% if @team.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@team.errors.count, "error") %> prohibited this team from being saved:</h2>

      <ul>
      <% @team.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :team_name %><br />
    <%= f.text_field :team_name %>
  </div>
  <div class="field">
    <%= f.label :template %><br />
    <%= f.number_field :template %>
  </div>
  <div class="field">
    <%= f.label :auth_token %><br />
    <%= f.number_field :auth_token %>
</div>
    <p>
        <%= f.fields_for :admins do |builder| %>
            <%= render "admin_fields", :f => builder %>
        <% end %>
    </p>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在TeamsController #new中出现ActiveRecord :: UnknownAttributeError错误

unknown attribute: user_id
Run Code Online (Sandbox Code Playgroud)

app/controllers/teams_controller.rb:28:在'new'中

TeamController#新

def new
    @team = Team.new
    @team.admins.build
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @team }
    end
end
Run Code Online (Sandbox Code Playgroud)

shw*_*eta 7

您不能将:foreign_key选项设置为表中不存在的列.您的用户表没有"user_id"或"admin_id"列.

无论如何,Rails不会为您创建外键列.您需要明确定义它们作为迁移的一部分.

请参阅活动记录关联