如何通过many_to_many关系访问数据?

时间:2014-03-20 12:44:45

标签: ruby-on-rails ruby activerecord many-to-many

如何通过此Many_to_Many关系访问数据?

以下是我的数据库创作:

" Useres":

class CreateSubgroups < ActiveRecord::Migration
  def change
    create_table :subgroups do |t|
      t.string :name
      t.belongs_to :group

      t.timestamps
    end
  end
end

关系:

class CreateRtimespans < ActiveRecord::Migration
  def change
        create_table :rtimespans do |t|
            t.belongs_to :subgroup_id
            t.belongs_to :timespan_id
        end
    end 
end

使用:

class CreateTimespans < ActiveRecord::Migration
  def change
    create_table    :timespans do |t|
      t.string      :name
      t.text        :descrition
      t.integer     :start_h
      t.integer     :start_m
      t.integer     :end_h
      t.integer     :end_m
    end
  end
end

我如何访问属于一个子组的所有时间跨度的名称? 反之亦然,我如何显示哪些子组使用特定的时间跨度?

2 个答案:

答案 0 :(得分:1)

第一个问题

只要您获得实例,就可以执行任何查找操作。我通过在模型上调用.first获得一个实例。

Subgroup.first.timespans.each do |timespan|
   puts timespan.name
end

反之亦然

Timespan.first.subgroups.each do |subgroup|
   puts subgroup.name
end

答案 1 :(得分:1)

正如您的代码建议您有两个模型

  

亚群

  

的入库时间

由于它们之间存在多对多的关系,我们可以将它们用作

# all timespans related to a subgroup
subgroup.timespans # where variable subgroup is a Subgroup object 

# all subgroups related to a timespan
timespan.subgroups # where variable timespan is a Timespan object