Rails - 通过关联发送预订请求

时间:2016-05-30 06:30:28

标签: ruby-on-rails associations

我有一个汽车和用户模型。用户拥有许多汽车和汽车属于用户模型。在汽车模型中,我有名为android:horizontalSpacing&的列。 renter_status,默认值为"待定"。在此过程中,任何一个用户都可以取消请求。

让我们说,约翰有一辆id = 1的车,而Jane希望在两个日期之间向John发送预订请求。当Jane发送预订请求时,如果所有者批准,则将请求发送给所有者,然后owner_request变为"已批准"。然后Jane可以看到请求已被批准,如果Jane取消,则renter_request变为"已取消"。

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

让我们说,John希望删除该请求,并且不希望在索引操作中看到它。当他这样做时,列owner_status变为" Deleted",但他的请求可以看作Jane尚未被删除。

最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

我想我有点失落。所以你有两个模型,CarUser,关联是这样的:
汽车

belongs_to :user

用户

has_many :cars

我会制作第三个模型Requests,因为一个Car应该有一个以上的请求&#39; ,让我们说,在一个月内。但如果你真的想这样做,你不应该让John删除请求,而是取消它 您可以执行此类行为,在您正在编辑请求的视图中添加控件,例如,提交按钮将调用控制器中的操作,该操作会将值更改为&#34;拒绝&#34;。<登记/> 在此之后,您可以索引未拒绝的请求,如下所示:

Rails 4

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

Rails 3

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

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