在 Rails 中查找条件
Find with condition in Rails
我正在开发一个项目,用户可以在其中创建席位有限的活动,并注册和参加其他活动。
到目前为止,我有一个事件、用户和座位模型。并删除了用户在我的座位模型中创建重复座位的功能。
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
解决这个问题
它让我很接近,但没有雪茄...
如何创建一个 returns 用户未参加的所有活动的 Active Record 查询?
您可以使用 .where.not
:
<% Event.where.not(id: @seats.map(&:event_id)).each do |p| %>
<...>
<% end %>
我正在开发一个项目,用户可以在其中创建席位有限的活动,并注册和参加其他活动。
到目前为止,我有一个事件、用户和座位模型。并删除了用户在我的座位模型中创建重复座位的功能。
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
解决这个问题它让我很接近,但没有雪茄...
如何创建一个 returns 用户未参加的所有活动的 Active Record 查询?
您可以使用 .where.not
:
<% Event.where.not(id: @seats.map(&:event_id)).each do |p| %>
<...>
<% end %>