将记录添加到 has_and_belongs_to_many 关系
Adding records to has_and_belongs_to_many relation
所以我想在这两个模型之间实现多对多关系:
class Bet < ActiveRecord::Base
belongs_to :betting_event
has_and_belongs_to_many :gambler_bets
validates_presence_of :odd, :outcome, :description, :betting_event_id
end
和
class GamblerBet < ActiveRecord::Base
belongs_to :gambler
has_and_belongs_to_many :bets
end
我写了 运行 迁移:
class CreateBetsGamblerBets < ActiveRecord::Migration
def change
create_table :bets_gambler_bets, :id => false do |t|
t.belongs_to :bet
t.belongs_to :gambler_bet
end
end
end
所以问题是:where 和 how 编写一个方法,将赌注添加到 Gambler
并存储他们每个人 bet_id
和 gambler_bet_id
在 bets_gambler_bet
table ?
如果你想实现 HABTM,我认为你需要在 Gambler 和 Bet 之间多对多。您需要在 Bet 模型中使用以下内容:
#bet.rb
class Bet < ActiveRecord::Base
has_and_belongs_to_many :gamblers
end
以及 Gambler 模型中的以下内容:
#gambler.rb
class Gambler < ActiveRecord::Base
has_and_belongs_to_many :bets
end
这将是您的 table 名称 bets_gamblers
的迁移
class CreateBetsGamblers < ActiveRecord::Migration
def change
create_table :bets_gamblers, :id => false do |t|
t.belongs_to :bets
t.belongs_to :gamblers
end
end
end
查询具有@gambler
实例的赌徒的赌注
@gambler.bets #this would give you all the bets of a gambler
将投注 @bet
插入 @gambler
的投注中
@gambler.bets << @bet
你可以用你的模型做类似的事情GamblerBet
,但如果只是为了在 Gambler 和 Bet 之间建立多对多关系,上面的关系会更好。
所以我想在这两个模型之间实现多对多关系:
class Bet < ActiveRecord::Base
belongs_to :betting_event
has_and_belongs_to_many :gambler_bets
validates_presence_of :odd, :outcome, :description, :betting_event_id
end
和
class GamblerBet < ActiveRecord::Base
belongs_to :gambler
has_and_belongs_to_many :bets
end
我写了 运行 迁移:
class CreateBetsGamblerBets < ActiveRecord::Migration
def change
create_table :bets_gambler_bets, :id => false do |t|
t.belongs_to :bet
t.belongs_to :gambler_bet
end
end
end
所以问题是:where 和 how 编写一个方法,将赌注添加到 Gambler
并存储他们每个人 bet_id
和 gambler_bet_id
在 bets_gambler_bet
table ?
如果你想实现 HABTM,我认为你需要在 Gambler 和 Bet 之间多对多。您需要在 Bet 模型中使用以下内容:
#bet.rb
class Bet < ActiveRecord::Base
has_and_belongs_to_many :gamblers
end
以及 Gambler 模型中的以下内容:
#gambler.rb
class Gambler < ActiveRecord::Base
has_and_belongs_to_many :bets
end
这将是您的 table 名称 bets_gamblers
class CreateBetsGamblers < ActiveRecord::Migration
def change
create_table :bets_gamblers, :id => false do |t|
t.belongs_to :bets
t.belongs_to :gamblers
end
end
end
查询具有@gambler
@gambler.bets #this would give you all the bets of a gambler
将投注 @bet
插入 @gambler
@gambler.bets << @bet
你可以用你的模型做类似的事情GamblerBet
,但如果只是为了在 Gambler 和 Bet 之间建立多对多关系,上面的关系会更好。