【发布时间】:2023-03-15 15:39:01
【问题描述】:
我的 Rails 申请是居住申请。
我有一个模型stay,它是has_many 中的第三个模型:通过tenant 和flat 之间的关联。停留由checkin_date 和checkout_date 定义。我想创建一个自定义验证,以防止创建一个新的stay,如果在给定的时间段内flat 中已经有一个tenant...但我之前从未编写过自定义验证,所以我超级迷茫……
按逻辑,我知道我需要比较“已经存在的记录”和“假定的新记录”的 checkin_date 和 checkout_date。所以我猜它看起来像:(n+1= 新记录 vs. n= 已经存在的记录)
> def duplicate_stay
>
> if Stay.exists?(tenant_id: current_tenant.id, studio_id:
> current_studio.id) &&
> checkin_date(n+1) > checkin_date(n)
> checkout_date(n+1) > checkin_date(n)
> checkin_date(n+1) < checkout_date(n)
> checkout_date(n+1) < checkout_date(n)
> == false
> else
> == true (the model can be created)
end
有人可以帮助我吗?我一直在寻找,但我知道该怎么做!
【问题讨论】:
标签: ruby-on-rails validation date