我想创建一个由15张卡片组成的随机包,这些卡片应该在创建时在cardpacks_controller中调用。我有以下模型:
卡片:
class Card < ActiveRecord::Base
# relations
has_many :cardpacks, through: :cardpackcards
belongs_to :cardset
end卡片盒:
class Cardpack < ActiveRecord::Base
#relations
has_many :cards, through: :cardpackcards
belongs_to :cardset
# accept attributes
accepts_nested_attributes_for :cards
end卡片卡:
class Cardpackcard < ActiveRecord::Base
#relations
belongs_to :card
belongs_to :cardpack
end卡片集:
class Cardset < ActiveRecord::Base
#relations
has_many :cards
has_many :cardsets
end如何创建具有随机card_id值和相同cardpack_id的15个Cardpackcard记录(以便它们属于同一个包)
我看过complex form series教程,但它没有让我理解如何解决这个问题。
我希望任何人都能帮助我解决这个问题,并让我对rails语言有更多的了解。
谢谢,埃里克
发布于 2012-09-09 06:19:19
根据数据库系统的不同,您可以使用order random子句查找15条随机记录。例如,在Postgres中:
Model.order("RANDOM()").limit(15)给定随机模型,您可以添加一个before_create方法来设置关联。
发布于 2012-09-09 06:31:05
如果Cardpackcard模型只提供cards和cardpacks之间的匹配,那么您可以使用has_and_belongs_to_many关联,这将稍微简化一些事情。
如果没有它,控制器代码可能如下所示:
cardset = Cardset.find(params[:cardset_id])
cardpack = Cardpack.create(:cardset => cardset)
15.times do
cardpack.cardpackcards.create(:card => Card.create(:cardset => cardset))
endhttps://stackoverflow.com/questions/12334917
复制相似问题