【问题标题】:Find with condition in Rails在 Rails 中查找条件
【发布时间】:2015-10-11 03:24:57
【问题描述】:

我正在开展一个项目,用户可以在其中创建有限席位的活动,并注册和参加其他活动。

到目前为止,我有一个事件、用户和座位模型。并删除了用户在我的 Seat 模型中创建重复座位的功能。

class Event < ActiveRecord::Base
  validates :title, :from_date, :from_time, :number_of_seats, presence: true
  belongs_to :user
  has_many :seats
end

class Seat < ActiveRecord::Base
  validates :event_id, :user_id, presence: true
  validates_uniqueness_of :user_id, :scope => :event_id
  belongs_to :event
  belongs_to :user
end

目前,我有一个页面列出了所有可用的事件。我要做的是创建用户正在参加的所有活动的查询,并将它们从页面中删除(或让用户知道他们已经参加了)。

我能够在我的座位控制器中创建用户正在参加的所有课程的页面:

def index
  @seats = Seat.where(user_id: current_user.id)
end

页面上有这个:

<h1 class="page-header">My Classes</h1>
    <% @seats.each do |p| %>
        <%= link_to Event.find(p.event_id).title, p %>
    <% end %>

我已经尝试使用Find with conditions: Stack Overflow解决这个问题

它让我很接近,但没有雪茄......

如何创建一个 Active Record 查询来返回用户未参加的所有事件?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord active-record-query


    【解决方案1】:

    你可以使用.where.not:

    <% Event.where.not(id: @seats.map(&:event_id)).each do |p| %>
       <...>
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 2013-05-18
      • 2011-12-12
      • 2012-08-03
      • 2021-12-11
      相关资源
      最近更新 更多