ActiveRecord关联模型

时间:2010-07-28 20:26:16

标签: ruby-on-rails activerecord

我是rails的新手并阅读此guide以获取目前为止的所有信息。

我有一个简单的场景,并希望确定我的协会是否能正常运作。

方案: User登录 - >设置了许多groups - >每个小组都有很多employees

User型号:

class User < ActiveRecord::Base
    has_many :groups
end

Group型号:

class Group < ActiveRecord::Base
    belongs_to :user
    has_many :employees
end

Employee型号:

class Employee < ActiveRecord::Base
    has_many :groups
    belongs_to :group
end

问题

  • 这适用于我提到的场景吗?
  • 我对如何在Employees下获取所有User感到困惑。那个代码是什么?
  • 如果我需要所有这些模型的典型CRUD,那么我的行动会是什么?索引/创建/更新/销毁?有人能指点我做一个好的行动指南吗?

2 个答案:

答案 0 :(得分:0)

你在大多数情况下都有它,但我认为你需要查看has_and_belongs_to_many(你经常会看到缩写为habtm。)索引,创建,更新和销毁将是你的Ruby on Rails的CRUD列表。至于一个好的指南,我喜欢Dave Thomas的Agile Web Development With Rails。 (当我提到一个新主题时,我喜欢书籍 - 电子或其他。)它可以通过实用程序员在线获得。关于“什么是好指南”的问题是非常主观的,所以需要注意。

答案 1 :(得分:0)

我也喜欢has_many通过 -

class User < ActiveRecord::Base
    has_many :groups
    has_many :employees, :through=>:groups
end

然后你可以去:

user = User.find(23)
user.employees.do_something

否则,您可以遍历您的团队及其员工(有点难看,但会工作)

User.first.groups.each{|group| group.employees.each{|employee| puts employee.name}}