【问题标题】:Rails - Seeding HABTM associationsRails - 播种 HABTM 协会
【发布时间】:2012-07-07 20:10:46
【问题描述】:
Equipment.create(name: "Room to run")
Equipment.create(name: "Pull-up bar")
Workout.create(
  description: "Do 100 pull-ups then run 5km",
  :equipment => Equipment.where(:name => 'Pull-up bar'))

设备和锻炼具有 HABTM 关系。上面的种子代码有效,但我怎样才能在第一个设备关联的同时分配第二个设备关联?

【问题讨论】:

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


    【解决方案1】:

    在where条件下,可以使用数组:

    Equipment.create(name: "Room to run")
    Equipment.create(name: "Pull-up bar")
    Workout.create(
      description: "Do 100 pull-ups then run 5km",
      :equipment => Equipment.where(:name => ['Pull-up bar', 'Room to run']))
    

    【讨论】:

    • 本例中设备的使用是不幸的。名词设备既是单数又是复数,这隐藏了一个重要的细节。如果我们谈论的是狗,例子看起来像: :dogs => Dog.where(:name => ['Fido', 'Butch']))
    【解决方案2】:

    在种子文件中,这个简单的列表适用于产品和类别 (HABTM) 关系。写的超级真实,效果也很好。

    Product.find(1).categories << Category.find(4)
    Product.find(1).categories << Category.find(5)
    Product.find(2).categories << Category.find(5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多