【发布时间】:2021-05-21 09:35:15
【问题描述】:
我有三个模型:用户投票 PollItem 投票
一个用户有很多投票和投票
投票有很多投票项目(嵌套属性),属于用户
投票项有很多票,属于投票
投票属于投票项和用户
我已经制作了一个投票功能,用户可以在其中投票/取消投票项目。现在,我正在尝试编写一个条件语句,以便用户能够对投票中的投票项目进行投票。例如,如果已经为投票中的第一个投票项目记录了投票,那么我希望在投票中的其他投票项目上禁用投票链接,除了已投票的投票项目。
<% if current_user.votes.where(poll: @poll).count > 0 %>
display vote link
<% else %>
remove vote link
<% end %>
但我得到了错误 SQLite3::SQLException: 没有这样的列: votes.poll_id
请也为问题提出一个更好的标题。
编辑:
按照@lam 的建议,我将语句调整为
<% if user_signed_in? && Vote.where(user_id: current_user.id).where(poll_item_id: @poll.poll_items.pluck(:id)).count > 0 %>
<p>You have voted</p>
<%= link_to "Unvote", poll_poll_item_vote_path(@poll, @poll_item), method: :delete %>
<% else %>
<%= link_to "Vote", poll_poll_item_vote_path(@poll, @poll_item), method: :post %>
<% end %>
但是,该操作已对投票中的所有投票项目执行。当我对一个投票项目进行投票时,其他投票项目的投票链接发生了变化,而不是投票项目。
【问题讨论】:
标签: ruby-on-rails activerecord