one to many(関連) ; Rails ; Design
1 対 多 on Rails
モデルを使ったとき、どのようにして実現するか
Student - Subject 関連を使う
Prepare
$ rails g model Student name:string $ rails g model Subject name:string student:references $ rake db:migrate
db/seeds.rb
Student.create! do |student| student.name = 'mat5ukawa' end $ rake db:seed
app/models/student.rb
class Student has_many :subjects end
app/models/subject.rb class Subject belongs_to :student end
rails c でアクション確認
$ rails c
> student = Student.find(1) >> => #<Student id: 1, name: 'ma5ukawa', created_at: "2014-01-27 14:14:58", updated_at: "2014-01-27 14:14:58"> > student.subjects >> #<ActiveRecord::Associations::CollectionProxy []> > student.subjects.create(name: 'math') >> begin transaction >> INSERT INTO "subjects" ... >> commit transaction > Subject.find(1) >> => #<Subject id: 1, name: "math", student_id: 1, created_at: "2014-01-27 14:28:53", updated_at: "2014-01-27 14:28:53"> > student.subjects >> => #<ActiveRecord::Associations::CollectionProxy [#<Subject id: 1, name: "math", student_id: 1, created_at: "2014-01-27 14:28:53", updated_at: "2014-01-27 14:28:53">]> > student.subjects.create(name: 'physics') >> begin transaction >> commit transaction > student.subjects >> => #<ActiveRecord::Associations::CollectionProxy [#<Subject id: 1, name: "math", student_id: 1, created_at: "2014-01-27 14:28:53", updated_at: "2014-01-27 14:28:53">, #<Subject id: 2, name: "physics", student_id: 1, created_at: "2014-01-27 14:34:23", updated_at: "2014-01-27 14:34:23">]>
参考元 # thanks
has_many (ActiveRecord::Associations::ClassMethods) - APIdock