所以我想在这两个模型之间实现多对多关系:
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
所以问题是:其中和如何编写一个方法,该方法会向Gambler
添加投注,并将每个投注存储为{{1} } {和bet_id
在gambler_bet_id
表中?
答案 0 :(得分:0)
如果你想实施HABTM,我认为你需要Gambler和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
这将是您使用表名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之间存在多对多关系,那么上面的关系会更好。