1

teacher「teacher_type_id」という名前の列を持つテーブルを作成しようとしていteacherTypeます。つまり、1 => Tutor、2 => Module Leader、3 => Lecturer という 3 つの行を持つテーブルに接続されている外部キーです。 .

私のschema.rbファイルには次の情報が含まれています。

create_table "teacher_types", :force => true do |t|
 t.string   "title"
 t.datetime "created_at", :null => false
 t.datetime "updated_at", :null => false
end

create_table "teachers", :force => true do |t|
 t.integer  "teacherType_id"
 t.string   "firstName"
 t.string   "lastName"
 t.datetime "created_at",     :null => false
 t.datetime "updated_at",     :null => false
end

add_index "teachers", ["teacherType_id"], :name => "index_teachers_on_teacherType_id"

ファイルは次のteacher_typ.rbようになります。

class TeacherType < ActiveRecord::Base
 has_many :teachers
 attr_accessible :title, :teacher_type_id   (Also tried :teacherType_id)
end

そして、私のteacher.rbファイルは次のようになります。

class Teacher < ActiveRecord::Base
  has_one :teacherType
  attr_accessible :firstName, :lastName
end

ただし、今、私に行きlocalhost:3000/teacher/new、TeacherType として「1」または「Tutor」を使用して新しい教師を作成しようとすると、フォームを送信すると、常に同じエラーが発生します。

ActiveModel::MassAssignmentSecurity::Error in TeachersController#create

Can't mass-assign protected attributes: teacherType_id
Rails.root: /Users/omar/rails_projects/attendance

Application Trace | Framework Trace | Full Trace
app/controllers/teachers_controller.rb:43:in `new'
app/controllers/teachers_controller.rb:43:in `create'

Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"NEJf3bISJsidStVyfdRns0oZ7JzSZ8RqqZSAWgL9hz8=",
 "teacher"=>{"teacherType_id"=>"Tutor",
 "firstName"=>"Jack",
 "lastName"=>"Sparrow"},
 "commit"=>"Create Teacher"}`

なぜそれが考えられるのでしょうか?私は見ていたattr_accessibleが、それでも役に立たなかった

4

2 に答える 2

3

teacherType_idTeachersController#new ビューで文字列が割り当てられていますが、整数として宣言されています。ビューを確認します。さらに、次のような大文字と小文字が混在する名前の使用は避けたいと思いteacherType_idます...

于 2013-02-28T13:54:33.540 に答える
2

教師で:

attr_accessible :firstName, :lastName, :teacherType_id
于 2013-02-28T13:54:22.720 に答える