Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4如何使用seeds.rb填充联接表_Ruby On Rails_Ruby_Ruby On Rails 4_Seeding - Fatal编程技术网

Ruby on rails Rails 4如何使用seeds.rb填充联接表

Ruby on rails Rails 4如何使用seeds.rb填充联接表,ruby-on-rails,ruby,ruby-on-rails-4,seeding,Ruby On Rails,Ruby,Ruby On Rails 4,Seeding,我在练习Rails。我想为它们设置消息和标记(对于单个消息应该有多个标记,对于单个标记应该有多个消息)。我有两个相关模型:消息和标签。它们使用has_和属于多个。我正在使用填充表 模型: 信息: class Message < ActiveRecord::Base has_many :comments, dependent: :destroy has_and_belongs_to_many :tags end 评论是无关紧要的。首先,我在这里填充messages表。其次,我从消息

我在练习Rails。我想为它们设置消息和标记(对于单个消息应该有多个标记,对于单个标记应该有多个消息)。我有两个相关模型:消息标签。它们使用has_和属于多个。我正在使用填充表

模型: 信息:

class Message < ActiveRecord::Base
  has_many :comments, dependent: :destroy
  has_and_belongs_to_many :tags
end
评论是无关紧要的。首先,我在这里填充messages表。其次,我从消息内部填充标签表。我最后得到的是填充的消息和标记表,其中每条消息都有2个标记

现在,问题是:

如何将已创建的标记与消息关联,反之亦然?我知道如何通过创建它们来实现这一点,但现在我想将几个标记与单个消息关联起来。我还想将一些消息关联到一个已经创建的标记。 如何做到这一点,语法是什么

这应该行得通

Message.all.each do |msg|
  rand(4).times { Comment.create([content: FFaker::CheesyLingo.sentence, message_id: msg.id]) }
  tags = 2.times { msg.tags.create([title: FFaker::HipsterIpsum.word.gsub(' ','-').downcase]) }
  msg.tags = tags
end
或者你可以手工做

msg = Message.first
tag = Tag.first
tag.messages << msg
# or
msg.tags << tag
msg=Message.first
tag=tag.first
tag.messages这应该有效

Message.all.each do |msg|
  rand(4).times { Comment.create([content: FFaker::CheesyLingo.sentence, message_id: msg.id]) }
  tags = 2.times { msg.tags.create([title: FFaker::HipsterIpsum.word.gsub(' ','-').downcase]) }
  msg.tags = tags
end
或者你可以手工做

msg = Message.first
tag = Tag.first
tag.messages << msg
# or
msg.tags << tag
msg=Message.first
tag=tag.first
标记消息
5.times { Message.create([content: FFaker::CheesyLingo.paragraph]) }

Message.all.each do |msg|
  rand(4).times { Comment.create([content: FFaker::CheesyLingo.sentence, message_id: msg.id]) }
  2.times { msg.tags.create([title: FFaker::HipsterIpsum.word.gsub(' ','-').downcase]) }
end
Message.all.each do |msg|
  rand(4).times { Comment.create([content: FFaker::CheesyLingo.sentence, message_id: msg.id]) }
  tags = 2.times { msg.tags.create([title: FFaker::HipsterIpsum.word.gsub(' ','-').downcase]) }
  msg.tags = tags
end
msg = Message.first
tag = Tag.first
tag.messages << msg
# or
msg.tags << tag