在 Rails 中,如何设置用于批量添加/编辑关联的表单



也许我的设置不正确,我会尝试概述整个模型设计,以防万一。

我有以下型号,[1] Player, [2] Game, [3] Participation, [4] Workout, [5] Measurable

选手

class Player < ActiveRecord::Base
  has_many :workouts
  has_many :measurables, through: :workouts
  has_many :participations
  has_many :games
end

游戏

class Game < ActiveRecord::Base
  has_one  :workout
  has_many :participations
end

参与

class Participation < ActiveRecord::Base
  belongs_to :player
  belongs_to :game
end

锻炼

class Workout < ActiveRecord::Base
  belongs_to :player
  has_many   :measurables
end

可测量的

class Measurable < ActiveRecord::Base
  belongs_to :workout
end

路线

resources :players do
  scope module: :players do
    resources :workouts
  end
end

如路线所示,我目前将锻炼作为我的球员模型的嵌套资源。 这在当时是有道理的,对我来说仍然如此。锻炼可以由一个玩家或多个玩家组成。 我现在遇到的问题是我想通过我的游戏资源一次添加/编辑许多锻炼的可测量值。 我该如何处理这种情况?我是否只是向视图/游戏添加一个页面,向games_controller添加一个新操作,然后将 accepts_nested_attributes 添加到我的游戏模型中? 如果是这种情况,如何在我的games_controller上构建强参数? 既然我需要允许接受可测量量,那么这是游戏协会的关联?

我是否只是向视图/游戏添加一个页面,向games_controller添加一个新操作,然后将 accepts_nested_attributes 添加到我的游戏模型中?

这取决于您的用户界面。如果您想将可测量值与游戏一起发送,那么这就是您要走的路。但是,如果要单独添加可测量对象,则需要Games::MeasureablesController。

如果是这种情况,如何在我的games_controller上构建强参数?

强参数通常与活动记录无关。这只是一条规则。必须允许发送到活动记录的每个参数对象。因此,您可以为每个对象类型编写多个参数允许方法,然后像这样传递它们。

Game.create(game_params, measurables: measurables_params)

我还从文档中看到您可以允许嵌套参数见 http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit

def game_params
  params.require(:game).permit(:name, :level, measureables: [:fps, :ping])
end

相关内容

  • 没有找到相关文章

最新更新