1
私はSTMSに取り組んでいます。経由して物事をモデル化し、学生のテーブルの新しいレコードを追加しようとしようとしていますが:ActiveRecord :: HasManyThroughAssociationNotFoundError - Ruby on Rails
stud = Student.create(:student_id => 1, :first_name => 'Jos', :last_name => 'Norton', :email => '[email protected]', :birthday => '12/05/1995', :subjects => 'English', :username => 'samnorton05', :password => 'Grace02112')
私はエラーを得た:
class Student < ApplicationRecord
has_many :subjects, through: :enrolled_subjects
has_many :teachers, through: :enrolled_subjects
def teacher_names
self.teachers.map(&:name).join(", ")
end
has_many :admin_users
has_secure_password
self.primary_key = :student_id
scope :newest_first, lambda { order("created_at ASC") }
scope :oldest_first, lambda { order("created_at DESC") }
# scope :search, lambda { |query| where(["name LIKE ?", "%#{query}%"])}
end
class Teacher < ApplicationRecord
has_many :subjects, through: :enrolled_subjects
has_many :students, through: :enrolled_subjects
has_many :admin_users
has_secure_password
scope :newest_first, lambda { order("created_at ASC") }
scope :oldest_first, lambda { order("created_at DESC") }
# scope :search, lambda { |query| where(["name LIKE ?", "%#{query}%"])}
end
class Subject < ApplicationRecord
has_many :students, through: :enrolled_subjects
has_many :teachers, through: :enrolled_subjects
has_many :admin_users
# scope :search, lambda { |query| where(["name LIKE ?", "%#{query}%"])}
end
class EnrolledSubject < ApplicationRecord
belongs_to :student
belongs_to :subject
belongs_to :teacher
end
class AdminUser < ApplicationRecord
has_secure_password
scope :newest_first, lambda { order("created_at ASC") }
scope :oldest_first, lambda { order("created_at DESC") }
# scope :search, lambda { |query| where(["name LIKE ?", "%#{query}%"])}
end
を:
ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :enrolled_subjects in model Student
は、ここで私が使用していたモデルです
基本的に私は5つのテーブルを持っています:学生、教師、科目、管理者のユーザーと登録科目。どのようなアイデアを私は間違って何ですか?申し訳ありません、私はここで初心者です。 HERE
EDITはMYマイグレーションされています
create_table :students, :id => false do |t|
t.integer "student_id", :auto_increment => true, :primary_key => true
t.string "first_name", :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => ' ', :null => false
t.string "birthday"
t.string "subjects"
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
create_table :teachers, :id => false do |t|
t.integer "teacher_id", :auto_increment => true, :primary_key => true
t.string "first_name"
t.string "last_name"
t.string "email", :default => ' ', :null => false
t.string "birthday"
t.string "subjects"
t.string "username", :limit => 25
t.string "password_digest"
t.timestamps
end
私も同様の先生にそれを配置する必要がありますでしょうか? –
私は試してみました** NoMethodError:未定義のメソッド "each" for "English":String ** –
yeap!それらのすべては、モデルはまずモデルとのhas_many関係を持っていることを知る必要があります。次に、それを介して別の関連付けを作成できるようになります。 –