gpt4 book ai didi

ruby-on-rails - rails 4 多对多通过数据透视表

转载 作者:行者123 更新时间:2023-12-04 06:35:20 25 4
gpt4 key购买 nike

我的模型:

class Entrant < ActiveRecord::Base
has_many :events, :through => :event_maps
has_many :event_maps, :foreign_key => "entrant_id"
accepts_nested_attributes_for :events, :reject_if => :all_blank
end

class Event < ActiveRecord::Base
has_many :event_maps, :foreign_key => "event_id"
has_many :entrants, :through => :event_maps
accepts_nested_attributes_for :entrants, :reject_if => :all_blank
end

class EventMap < ActiveRecord::Base
belongs_to :event, foreign_key: "event_id"
belongs_to :entrant, foreign_key: "entrant_id"
end

据我所知,我的映射是正确的,在控制台上我可以执行以下操作:

创建一个新的事件并添加一个新的参赛者:

@event = Event.new(name: 'my event');
@event.save
@event.entrants_attributes = [{name: 'Jack'}]
@event.save

创建一个新的参赛者并添加一个新的事件:

@entrant = Entrant.new(name: 'Peter')
@entrant.save
@entrant.events_attributes = [{name: 'Great concert'}]
@entrant.save

现在如何将 Peter 映射到 my event 或将 Jack 映射到 Great concert含义

  1. 我想为现有事件注册现有参赛者,
  2. 向现有事件添加新参赛者,反之亦然。

正如我所说,很多 2 很多似乎都可以双向工作,但将数据添加到现有对象的数据透视表对我来说并不是很清楚。感谢您的帮助。

编辑:好的,我有 2 个。

@event.entrants.new(name: "hello") #adds a new Entrant works

最佳答案

你可以做到(如 j03w 所建议的那样)

   @event.entrants << @entrant

<< 是二元左移运算符

Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand.

它也用于数组,将给定的对象推到数组的末尾。该表达式返回数组本身,因此多个追加可以链接在一起。

  $: [] << 'a'
-> ['a']

关于ruby-on-rails - rails 4 多对多通过数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19808592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com