我很难理解如何使用自引用HABTM关系,cancan和ActiveRecord来处理这种情况.
我正在尝试使用accessible_by来确定一组视频,这些视频在视频和频道之间存在关系的情况下是可见的,但是生成的SQL对于部分查询具有错误的表名.以下是关系:
# video.rb
class Video < ActiveRecord::Base
belongs_to :channel
end
# channel.rb
class Channel < ActiveRecord::Base
has_many :videos
has_and_belongs_to_many :subchannels, :class_name => "Channel", :join_table => "channels_channels", :foreign_key => :parent_id, :association_foreign_key => :subchannel_id
has_and_belongs_to_many :parent_channels, :class_name => "Channel", :join_table => "channels_channels", :foreign_key => :subchannel_id, :association_foreign_key => :parent_id
end
# The appropriate channels_channels table exists with subchannel_id and parent_id fields.
Run Code Online (Sandbox Code Playgroud)
我需要一个cancan能力来查找默认频道的公共子频道中的所有公共视频.我尝试了以下方法:
# ability.rb
can :read, Video, :permission => 'public', :channel => {:permission => 'public', :parent_channels => {:name …Run Code Online (Sandbox Code Playgroud)