可标记行为和两个表之间的范围

时间:2019-07-14 02:54:18

标签: ruby-on-rails ruby

我有一个事件表,一个企业表以及一个通过标签行为生成的标签表,其中每个企业都有一个行业标签。 每个事件都属于一个企业,而一个企业具有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声明完全不正确。 有人知道怎么做吗?

0 个答案:

没有答案