Вопрос о запросах с несколькими предложениями where, Rails 3

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

У меня есть класс под названием Gym

 class Gym < ActiveRecord::Base
  has_many :gym_users
  has_many :users, :through => :gym_users

  validates :name, :address1, :city, :state, :zip, :phone, :website, :presence => true

  def has_admin_access?(user)
    user.present? amp;amp; gym_users.where(:user_id => user.id, :gym_role_id => 3)
  end
end
  

Я хочу изменить метод has_admin_access для поиска идентификатора gym_role_id, равного 3 или 4. Другой вопрос, который у меня есть, заключается в том, как мне сделать меньше или больше, чем?

Есть ли где-нибудь в Интернете шпаргалка?

Ответ №1:

Попробуйте это

 user.present? amp;amp; gym_users.where(:user_id => user.id, :gym_role_id => [3, 4])
  

Попробуйте MetaWhere gem для написания запросов less than и great than вместе с символами. Учебное пособие доступно по http://railscasts.com/episodes/251-metawhere-metasearch

Начиная с Rails 3.1, MetaWhere не поддерживается. Более современной альтернативой является Squeel.

Комментарии:

1. Значит, если вы передадите ему несколько значений в массиве, он автоматически создаст оператор in?

2. да, он использует предложение in с array