【问题标题】:Rails - send reservation request with associationRails - 通过关联发送预订请求
【发布时间】:2016-05-30 15:28:11
【问题描述】:

我有汽车和用户模型。用户有很多汽车,汽车属于用户模型。在汽车模型中,我有名为renter_statusowner_status 的列,默认值为“待定”。在此过程中,任何一个用户都可以取消请求。

假设 John 有一辆 id = 1 的汽车,Jane 想在两个日期之间向 John 发送预订请求。当 Jane 发送预订请求时,如果所有者批准,请求将发送给所有者,然后 owner_request 变为“已批准”。然后 Jane 可以看到请求已被批准,如果 Jane 取消,则renter_request 变为“已取消”。

我认为一定有一种方法可以通过 rails 关联更好地做到这一点。我有两个用户,但是当他们读写同一个模型时,我必须一直检查renter_status 和 owner_status。

比方说,John 想要删除该请求并且不想在索引操作中看到它。当他这样做时,列 owner_status 变为“已删除”,但他的请求可以视为 Jane 尚未删除。

最有效的方法是什么?

【问题讨论】:

标签: ruby-on-rails associations


【解决方案1】:

我想我有点迷路了。所以你有 2 个模型,CarUser,关联是这样的:
汽车

belongs_to :user

用户

has_many :cars

我会制作第三个模型,Requests,因为一个 Car 应该有多个 'Request' ,比方说,在一个月内。但如果你真的想这样做,你不应该让约翰删除请求,而是取消它。
您可以执行这种行为,在您正在编辑请求的视图中添加一个控件,例如,一个提交按钮,该按钮将在您的控制器中调用一个操作,该操作会将值更改为“拒绝”。
在此之后,您可以像这样索引未拒绝的请求:

导轨 4

@requests_not_rejected = Car.where.not(renter_status: 'Rejected')

轨道 3

@requests_not_rejected = Car.where(Car.arel_table[:renter_status].not_eq(me))

当你在录制这些动作时,通常你不会删除它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多