连接具有多个条件的两个表

时间:2016-01-21 09:09:48

标签: postgresql activerecord

我的模板中有以下代码

<% @dishes.each do |d| %>
<div class="card">
    <img src="<%= d.image_url %>" alt="">
    <a href="/dishes/<%= d.id %>"><p><%= d.name %></p></a>
    <p><%= d.dish_type.name if d.dish_type %></p>
    <h4>@ <%= d.venue %></h4>

    <form action="/likes/<%= d.id %>" method="post">
        <button <%= 'disabled' if d.likes.where(user_id: current_user.id) %>>Like</button>
        <p>Count: <%= d.likes.count %></p>
    </form>

我想要实现的是当用户点击“喜欢”按钮时我应该禁用该按钮。

我有三张餐桌,用户,喜欢。喜欢表包含dish_id和user_id作为外键。你可以说很多关系,喜欢是一个联结表。

我是主动记录我已经设置了所有连接和belongs_to和has_many关系,它们都很好。

我面临的问题是在这一特定行

<button <%= 'disabled' if d.likes.where(user_id:  current_user.id) %>>Like</button>

以某种方式连接条件不起作用,它总是计算为true。我尝试了不同的变体,比如使用'join',但是没有任何东西可以正常工作。 任何帮助表示赞赏。如果需要进一步的信息,请告诉我?

1 个答案:

答案 0 :(得分:0)

我认为它总是求值为true,因为where子句返回一个活动的记录关系对象。

如果您想从该特定查询中获得真或假,您可以使用“exists?”:

$.map(inputs, function(e) {
  return (e.length > 0);
}).indexOf(false) == -1;

如果数据库中存在记录,则会返回True,否则为False。