不完全确定如何查看,但我无法在任何地方找到解决方案。我想为一组用户分配一系列网站。像这样:
users = User.all
sites = Site.all
users.each do |user|
sites.each do |site|
user.websites << site
end
end
显然,这不起作用,因为我遗漏了一些关于块范围的内容。但是,这有效:
users.each do |user|
Site.all.each do |site|
user.websites << site
end
end
但我正在尝试消除对DB(Site.all.each ...)的额外调用,并在此过程中了解Ruby。非常感谢任何帮助。
答案 0 :(得分:1)
我不确定为什么第一次尝试不起作用,但我也不太明白为什么你要单独追加每个网站。这不行吗?
users = User.all
sites = Site.all
users.each do |user|
user.websites.concat(sites)
end
如果它们实际上是哈希(虽然你说它们是数组),你正在寻找的方法是merge
答案 1 :(得分:1)
如果您的用户模型与网站(类名网站)有很多关系,那么您可以这样做
users = User.all
sites = Site.all
users.each do |user|
user.websites = sites
end
编辑:对于Harpastum:
如果user.websites包含不在Site.all中的项目,您不希望过度编写以下作品。
users = User.all
sites = Site.all
users.each do |user|
user.websites << sites
end