Rails 4设置与HABTM的关系

时间:2014-02-13 20:27:49

标签: ruby-on-rails ruby-on-rails-4 has-and-belongs-to-many

我有两个现有的模型 - 学校和用户。

class School < ActiveRecord::Base
has_and_belongs_to_many :users

class User < ActiveRecord::Base
has_and_belongs_to_many :schools

我的问题是,我如何分配和用户到学校?我无法弄清楚如何获取它以便School.users返回任何值。

2 个答案:

答案 0 :(得分:1)

该关系是针对学校(特定学校)的实例定义的,因此School.users永远不会有效。

假设您有正确的表设置(您必须手动为连接表创建迁移,请参阅例如here),这实际上非常简单。

school = School.first
user = User.first

# add user to school
school.users << user

# or v.v.
user.schools << school

答案 1 :(得分:0)

如果您希望用户只属于某个特定学校(对于学生和教师,员工等最有意义),您需要将您的关联更改为:

学校

has_many:用户

用户

belongs_to:school

然后你还需要一个 user_id:学校表中的整数列。

现在您可以查询。

school = School.first

school.users

如果你想要多对多的关系,你需要创建一个带有school_id和user_id字段的schools_users表。