我有一个事件表,一个企业表以及一个通过标签行为生成的标签表,其中每个企业都有一个行业标签。 每个事件都属于一个企业,而一个企业具有has_many事件。
我想使用范围创建过滤,以根据企业的部门过滤事件。
我的范围目前看起来像:
scope: by_cities, -> city {where(:city =< city)}
scope :by_sectors, -> sector {where(joins(:event).where(entreprises: {sector: sector})}.
第一个作用域工作得很好,因为事件表有一个city列。 但是对于第二个范围,我需要根据企业的标签来过滤事件,这对我来说不太明显。
在我的事件控制器中,我有:
@sectors = ActAstaggable::Tagging.includes(:tag).where(taggable_type: 'Entreprise').map{|tagging| {'id' => tagging.tag_id.to_s, 'name' => tagging.tag.name}}.uniq
在我看来,我有
<@sectors.each do |sector| %>
<%= chec-box_tag "by_sectors[]", sector %> <%= sector["name"] %>
<% end %>
该视图在视图中工作正常,但是单击标签时出现错误。
ActionView::Template::Error (Can't join'Event' to association named 'event''perhaps you misspeled it ?)
。
我认为这是我的scopre声明完全不正确。 有人知道怎么做吗?