代码之家  ›  专栏  ›  技术社区  ›  James Thompson

RubyonRails中的隐式表

  •  0
  • James Thompson  · 技术社区  · 17 年前

    我正在学习如何使用RubyonRails编程,RubyonRails框架为您做了大量工作,这给我留下了深刻的印象。我有以下两门课:

    Object
    --------
    object_id
    description
    
    ObjectGroup
    --------
    group_id 
    description
    

    我的想法是我有一些对象,我希望用户能够定义对象组。对象行和对象组行都有自己的标识符和关联的数据,基于web上发布的文档,这是非常直观的。我的问题是——如何存储组成ObjectGroup的对象的信息并充分利用RubyonRails框架?在SQL中执行此操作的明显方法是使用第三个表,该表存储以下形式的条目:

    ObjectGroupEntry
    --------
    object_id
    group_id
    

    我可以用我所知道的自己来做这件事,但我仍在学习RubyonRails,我想学习正确的方法(TM)来做这件事。

    2 回复  |  直到 17 年前
        1
  •  3
  •   workmad3    17 年前

    有了Rails,两者都有一点。使用具有正常命名约定的迁移(或其他方法)创建表,然后在对象和对象组的模型中放入以下行:

    ==Object==
    has_and_belongs_to_many :object_groups
    
    ==ObjectGroup==
    has_and_belongs_to_many :objects
    

    只要ObjectGroup表中没有任何额外的信息,这就是您所需要的。否则,您将需要一个新模型,但可能会得到如下相同的行为:

    ==Object==
    has_many :object_object_groups
    has_many :object_groups, :through => :object_object_groups
    
    ==ObjectObjectGroup==
    belongs_to :object
    belongs_to :object_group
    
    ==ObjectGroup==
    has_many :object_object_groups
    has_many :objects, :through => :object_object_groups
    

    指示has_many与:through属性的关系,以获得多对多关系,并允许访问有关该关系的其他信息。

        2
  •  1
  •   nitecoder    17 年前

    has_many :object_object_groups
    has_many :objects, :though => :through => :object_object_groups
    

    推荐文章