Rails 多对多的嵌套属性
Rails nested attributes for many to many
您好,我正在尝试使用嵌套属性实现一项功能。在创建让分盘(为客户)的表单中,我想显示所有客户联赛的列表,当在创建操作中提交表单时,我将使用@handicap.save,这将创建两者之间的关联还有让分盘和联赛(在表格中选择的联赛)。
我找到的唯一解决方案是不使用嵌套属性。
在新方法中,我会从客户那里获取所有障碍并将它们显示在表格中。因此,当在创建操作中提交表单时,我会进行验证..,为客户创建@handicap 记录,然后
手动为来自我将创建关联的表单中的每个联盟 ID。
#New/Create actions in the handicaps controller
def new
@leagues = @customer.leagues
end
def create
handicap = @customer.handicaps.build(handicap_params)
if handicap.save
associations = []
params[:league_ids].each do |id|
associations << LeagueHandicap.new(handicap_id: @handicap.id, league_id: id)
end
LeagueHandicap.import(associations)
end
end
我想 handicap.save 并自动创建 LeagueHandicap 协会。但是我不知道如何使用嵌套属性来做到这一点。可以这样吗?
我有以下型号:
class Customer < ActiveRecord::Base
has_many :handicaps, dependent: :destroy
has_many :leagues, dependent: :destroy
end
class Handicap < ActiveRecord::Base
belongs_to :customer
has_many :league_handicaps
has_many :leagues, through: :league_handicaps, dependent: :destroy
end
class LeagueHandicap < ActiveRecord::Base
belongs_to :handicap
belongs_to :league
end
class League < ActiveRecord::Base
has_many :league_handicaps
has_many :handicaps, through: :league_handicaps, dependent: :destroy
end
(通过LeagueHandicap,Handicap和League之间存在多对多关系)
如果您允许 league_ids
rails 应该为您添加它们。你需要告诉 rails 它是一个数组
def handicap_params
params.require(:handicap).permit(league_ids: [])
end
您好,我正在尝试使用嵌套属性实现一项功能。在创建让分盘(为客户)的表单中,我想显示所有客户联赛的列表,当在创建操作中提交表单时,我将使用@handicap.save,这将创建两者之间的关联还有让分盘和联赛(在表格中选择的联赛)。
我找到的唯一解决方案是不使用嵌套属性。 在新方法中,我会从客户那里获取所有障碍并将它们显示在表格中。因此,当在创建操作中提交表单时,我会进行验证..,为客户创建@handicap 记录,然后 手动为来自我将创建关联的表单中的每个联盟 ID。
#New/Create actions in the handicaps controller
def new
@leagues = @customer.leagues
end
def create
handicap = @customer.handicaps.build(handicap_params)
if handicap.save
associations = []
params[:league_ids].each do |id|
associations << LeagueHandicap.new(handicap_id: @handicap.id, league_id: id)
end
LeagueHandicap.import(associations)
end
end
我想 handicap.save 并自动创建 LeagueHandicap 协会。但是我不知道如何使用嵌套属性来做到这一点。可以这样吗?
我有以下型号:
class Customer < ActiveRecord::Base
has_many :handicaps, dependent: :destroy
has_many :leagues, dependent: :destroy
end
class Handicap < ActiveRecord::Base
belongs_to :customer
has_many :league_handicaps
has_many :leagues, through: :league_handicaps, dependent: :destroy
end
class LeagueHandicap < ActiveRecord::Base
belongs_to :handicap
belongs_to :league
end
class League < ActiveRecord::Base
has_many :league_handicaps
has_many :handicaps, through: :league_handicaps, dependent: :destroy
end
(通过LeagueHandicap,Handicap和League之间存在多对多关系)
如果您允许 league_ids
rails 应该为您添加它们。你需要告诉 rails 它是一个数组
def handicap_params
params.require(:handicap).permit(league_ids: [])
end