「教師」モデルと「ロボット」モデルの間に 1 対多の関係を設定する必要があります。各教師には多くのロボットがありますが、各ロボットには教師が 1 人しかいません。
私はそれを適切にセットアップしたと思っていましたが、レールコンソールでこれをいじろうとすると、次のように入力します:
teacher1.robots = [robot1, robot2]
ここで、teacher1 が有効な教師で、robot1 と robot2 が両方とも有効なロボットである場合、次のエラーが発生します。
SQLite3::SQLException: no such column: robots.teacher_id: SELECT "robots".* FROM "robots" WHERE "robots"."teacher_id" = 14
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: robots.teacher_id: SELECT "robots".* FROM "robots" WHERE "robots"."teacher_id" = 14
私は Ruby (および Ruby on Rails) に非常に慣れていませんが、行ったすべての調査で、モデルまたは移行をセットアップした方法に間違いを見つけることができません... 2 つのモデル ファイルを次に示します。そして移住。
*_create_robots.rb:
class CreateRobots < ActiveRecord::Migration
def up
create_table 'robots' do |t|
t.text 'serial'
t.references 'teachers'
end
end
def down ; drop_table 'robots' ; end
end
robot.rb:
class Robot < ActiveRecord::Base
belongs_to :teacher
end
教師.rb:
class Teacher < ActiveRecord::Base
has_many :robots
before_destroy :confirm_no_inventory
protected
def confirm_no_inventory
unless self.usb_cords == 0 and self.simple_snaps == 0 and self.casters == 0
errors.add(:base, "All checked out items must be returned before #{self.name} can be deleted")
return false
end
end
end
時間をかけてこれを調べてくれた人に前もって感謝します。問題が何であるか、またはそれを修正する方法についての考えは大歓迎です。