#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