如何播种但不复制
How to seed but do not duplicate
你好,我想在 rails 中播种我的数据库,我有标签模型,它是 table 到八卦模型和标签模型的连接点。
我希望每个八卦至少有一个标签,标签在 1 到 3 个之间。但我不会八卦有2次相同的标签。
gossip_array = Gossip.all
gossip_array.each do |gossip|
rand(1..3).times do |index|
l = Labeling.new(gossip: gossip, tag: Tag.all.sample)
l.save if
end
end
我想我必须在 if 之后添加类似这样的内容:如果这还不存在,但我不知道该怎么做,或者它可能存在更好的解决方案。
感谢您的帮助。
您使用的是 Rails 4 或更高版本吗?如果是这样,请查看 #find_or_create_by
。示例(分为两行以使其更易于阅读):
tag = Tag.all.sample
Labeling.find_or_create_by(gossip: gossip, tag: tag)
这将首先查询具有给定 gossip
和 tag
的标签。如果存在这样的标签,则什么也不会发生。但如果它不存在,则会使用给定的 gossip
和 tag
.
创建一个新的
你的意思是这样的?
gossip_array = Gossip.all
gossip_array.each do |gossip|
rand(1..3).times do |index|
Labeling.find_or_create_by(gossip: gossip, tag: Tag.all.sample)
end
end
你好,我想在 rails 中播种我的数据库,我有标签模型,它是 table 到八卦模型和标签模型的连接点。
我希望每个八卦至少有一个标签,标签在 1 到 3 个之间。但我不会八卦有2次相同的标签。
gossip_array = Gossip.all
gossip_array.each do |gossip|
rand(1..3).times do |index|
l = Labeling.new(gossip: gossip, tag: Tag.all.sample)
l.save if
end
end
我想我必须在 if 之后添加类似这样的内容:如果这还不存在,但我不知道该怎么做,或者它可能存在更好的解决方案。
感谢您的帮助。
您使用的是 Rails 4 或更高版本吗?如果是这样,请查看 #find_or_create_by
。示例(分为两行以使其更易于阅读):
tag = Tag.all.sample
Labeling.find_or_create_by(gossip: gossip, tag: tag)
这将首先查询具有给定 gossip
和 tag
的标签。如果存在这样的标签,则什么也不会发生。但如果它不存在,则会使用给定的 gossip
和 tag
.
你的意思是这样的?
gossip_array = Gossip.all
gossip_array.each do |gossip|
rand(1..3).times do |index|
Labeling.find_or_create_by(gossip: gossip, tag: Tag.all.sample)
end
end