Ransack,连接多个表

时间:2014-07-18 06:09:20

标签: ruby-on-rails ruby-on-rails-4 ransack

控制器代码:虽然错了......

def index
  @q = Borrow.ransack(params[:q])
  @borrows = @q.result.includes(:request => :signup, :inventory => :signup)
end

基本上,借用:

  • Request的孩子,当时是Signup的孩子
  • Inventories的多对多关系,Signup
  • 的孩子

在我的Ransack搜索表中,我需要搜索这两组关联。然而第一个效果很好:

工作代码:

<div class="form group">
  <%= f.label :request_signup_email_cont %>
  <%= f.search_field :request_signup_email_cont %>
</div>

<th><%= sort_link(@q, 'requests.signups.email', "Borrower Email") %></th>

但第二个不是:

无效代码

<div class="form group">
  <%= f.label :inventory_signup_email_cont %>
  <%= f.search_field :inventory_signup_email_cont %>
</div>

<th><%= sort_link(@q, 'inventories.signups.email', "Lender Email") %></th>

错误:undefined method inventory_signup_email_eq'适用于Ransack ::搜索&gt;:Ransack :: Search`

我试过的其他内容:

  • Borrow和Inventory通过名为Invenborrow的连接表处于多对多关系中。所以我尝试了:invenborrow => :inventory => :signup的一个变体,但这引发了=>出乎意料的错误,这让我觉得可能无法实现三重链接......
  • 然后我尝试了:invenborrow => :inventory,因为如果我可以获得inventory,我可以运行搜索并找到注册。但是上面提到了相同的未定义方法......
  • 所以现在我认为我的控制器代码是错误的,或者Ransack不能做两个不同的“树”关联。

0 个答案:

没有答案