基本的に私の問題は、レール アプリケーションでネストされたビューを使用しようとすると、ページの一般ユーザーと管理者の両方を保存する必要があることです。どちらにも、誰が誰であるかを知るために必要な同じ情報が含まれています。私はチームモデルを持っています:
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
また、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
チーム/新しいビュー
<%= 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 %>
エラー ActiveRecord::TeamsController の UnknownAttributeError#new
unknown attribute: user_id
app/controllers/teams_controller.rb:28:in `new'
TeamController#new
def new
@team = Team.new
@team.admins.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @team }
end
end