如何导航嵌套的 HABTM 关系?
How to navigate nested HABTM relationships?
在我的申请中:
User
has_and_belongs_to_many Events
Video
has_and_belongs_to_many Events
所以一个用户可能拥有多个事件,每个事件都有很多视频,因此用户拥有这些事件视频的总和。
给定一个user
,我怎样才能得到他们的videos
?
我目前正在使用这个麻烦的解决方法:
@events = @user.events
@videos = []
@events.map do |event|
event.videos.map do |video|
@videos.push(video)
end
end
有没有更好更高效的方式获取那个用户的视频?你可能会说我是一个 Rails 菜鸟...
尝试建立一个 "through" 协会:
class User
has_and_belongs_to_many :events
has_many :videos, :through => :events
您现在应该能够:
user.videos
在您真正应该阅读的所有 Rails 指南中提供了有关关联的更多详细信息:http://guides.rubyonrails.org/association_basics.html
:)
其他随笔(主要是你自称是菜鸟,这东西我教了一段时间);)
1) 你可能不需要 rails 变量名前的 @
...如果你在控制器,并将变量传递给视图...否则你可以调用它 something
2) 如果你真的在做一些有最终结果的事情,你真的只需要使用 map
例如:
other_numbers = [1,2,3].map {|num| num + 1 }
如果您不打算将 map 的结果分配给某物...那么通常最好只使用 each
例如:
events.each do |event|
...
3) 在你的循环中,你获取一个数组 event.videos
然后使用 @videos.push
将每个视频单独添加到另一个数组,但你可以将数组添加在一起,例如:
@videos = []
events.each do |event|
@videos += event.videos
end
在我的申请中:
User
has_and_belongs_to_manyEvents
Video
has_and_belongs_to_manyEvents
所以一个用户可能拥有多个事件,每个事件都有很多视频,因此用户拥有这些事件视频的总和。
给定一个user
,我怎样才能得到他们的videos
?
我目前正在使用这个麻烦的解决方法:
@events = @user.events
@videos = []
@events.map do |event|
event.videos.map do |video|
@videos.push(video)
end
end
有没有更好更高效的方式获取那个用户的视频?你可能会说我是一个 Rails 菜鸟...
尝试建立一个 "through" 协会:
class User
has_and_belongs_to_many :events
has_many :videos, :through => :events
您现在应该能够:
user.videos
在您真正应该阅读的所有 Rails 指南中提供了有关关联的更多详细信息:http://guides.rubyonrails.org/association_basics.html :)
其他随笔(主要是你自称是菜鸟,这东西我教了一段时间);)
1) 你可能不需要 rails 变量名前的 @
...如果你在控制器,并将变量传递给视图...否则你可以调用它 something
2) 如果你真的在做一些有最终结果的事情,你真的只需要使用 map
例如:
other_numbers = [1,2,3].map {|num| num + 1 }
如果您不打算将 map 的结果分配给某物...那么通常最好只使用 each
例如:
events.each do |event|
...
3) 在你的循环中,你获取一个数组 event.videos
然后使用 @videos.push
将每个视频单独添加到另一个数组,但你可以将数组添加在一起,例如:
@videos = []
events.each do |event|
@videos += event.videos
end