我有以下模型结构:
USER
has_many :items
has_many :payments
ITEM
belongs_to :user
has_many :payments
PAYMENT
belongs_to user
belongs_to listing
因此,一个 USER 可以是 PAYMENT 的创建者,而另一个可以访问相同的 PAYMENT ,但作为接收者付款(通过他拥有的项目)
如何在此处组织路线和控制器以区分两者并以干净的方式查询模型?
我尝试了嵌套路由以实现完整的RESTFUL路由:
/items/x/payment/y
...但我什么都没得到......我总是在同一个控制器上调用相同的方法,我必须得到用户的付款和所有PAYMENTS用户的项目。另外,我读了一篇很棒的文章,认为嵌套不应该超过1级,事实是我并不真正关心是否使用/payment/3
或更长版本来显示付款3。
我关心的是保持我的代码库可维护:)我是RoR的新手,但我清楚的是Rails中的东西总是有很好的解决方案:p
我目前所拥有的是:ItemsController#show
我致电Payment.as_payer(current_user)
和Payment.as_payer(current_user)
,而预订模式实施了这两种方法,可以返回所有付款方式用户通过项目创建或接收...
欢迎任何有关该体系结构的建议:)路由,控制器,模型,范围...
答案 0 :(得分:0)
请在您的视图中执行以下操作,尝试仅显示当前用户的付款。
<% @user.payments.each do |payments| %>
获取用户项目的付款:
<% @user.items.each do |item| %>
<% item.payments each do |payment| %>
....your view code...
<% end %>
<% end %>