Проверка Rails для записей - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь создать пользовательскую проверку для одной из моих моделей при создании, моя проверка ограничивает пользователя для создания одной записи в день.Но мне нужно добавить условие, позволяющее пользователю создавать несколько записей в день, если один из атрибутов записей является уникальным "job_id".

мой класс пользователя

class CareGiver < ApplicationRecord
  devise :database_authenticatable, :registerable,
 :recoverable, :rememberable, :validatable, :confirmable 
 validates_presence_of :phone, :city, :state, :street, :zip, presence: true, on: :create

  has_many :hours do
    def today
      where(:created_at =>(Time.zone.now.beginning_of_day..Time.zone.now))
    end
  end

end

каждая часовая запись имеет "job_id".Я хочу, чтобы пользователи могли создавать одну запись в день, которая работает.но если "job_id" является уникальным и не имеет зарегистрированных часов для него.я хочу, чтобы они могли создавать записи.

запись, которую я создаю (часы)

class Hour < ApplicationRecord
  belongs_to :care_giver
  validate :hours_for_the_day, :on => :create

  private 
    def hours_for_the_day
      if care_giver.hours.today.count >= 1 
        errors.add(:base, "Exceeds daily limit")
      end
   end
end

Должен ли я добавить параметр в этот метод?У меня проблемы с пониманием, как я могу этого достичь.любая помощь будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Хорошо, поэтому я (ошибочно) предположил, что job_id в настоящее время используется для ссылки на модель Job.Но поскольку это не так, не должно быть слишком сложным добавить еще одну проверку для проверки уникальности job_id в модели Hour.Я не проверял это, но я думаю это должно работать.

#other code
validate :unique_job_id, :on => :create

private

def unique_job_id
  if Hour.where(job_id: job_id).any?
    #errors
  end
end
#other stuff
0 голосов
/ 13 февраля 2019

Возможно, вы хотите вместо этого иметь поле даты works_on в Часе и дать ему уникальную проверку?

Вы действительно хотите ограничить кого-либо вводом одной записи Часа в день или ограничить ее одной записью Часауникальной даты?

class CareGiver < ApplicationRecord
  devise ...

  has_many :hours

  validates_presence_of :phone, ..., presence: true, on: :create
end

class Hour
  validates_uniqueness_of :worked_on
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...