如何在两个模型之间设置此关联?

时间:2014-01-20 16:55:58

标签: ruby-on-rails

我有桌子:

和表

现在,我想建立关联,我可以设置哪些 Library 记录可以 Groups 记录看到(基本上是一个复选框)。因此,如果用户属于某个组,则他不会看到某些库记录。

1 个答案:

答案 0 :(得分:0)

开始之前的一个建议 - 不要将Group用作ActiveRecord类名,因为它将覆盖已按惯例使用该术语的某些功能。现在,我假设你正在使用Group。

如果图书馆只能属于一个群组,则需要一个简单的has_many - belongs_to关联设置:

class Group < ActiveRecord::Base
  has_many :users
  has_many :libraries
end

class Library < ActiveRecord::Base
  belongs_to :group
end

class User < ActiveRecord::Base
  belongs_to :group
  has_many :libraries, :through => :group
end

如果图书馆可以属于多个群组,您需要一个联接表(理想情况下是一个联接模型)来设置它:

class Group < ActiveRecord::Base
  has_many :users
  has_many :group_libraries     
  has_many :libraries, :through => :group_libraries
end

class GroupLibrary < ActiveRecord::Base
  belongs_to :group
  belongs_to :library
end

class Library < ActiveRecord::Base
  has_many :group_libraries
  has_many :groups, :through => :group_libraries
end

class User < ActiveRecord::Base
  belongs_to :group
  has_many :libraries, :through => :group
end