Я не знаю, что такое соглашение (если оно есть), но я склонен выполнять свои многомодельные транзакции в формате "существительное-глагол".Например, если бы User
хотел купить Product
, я бы сделал:
class User < ActiveRecord::Base
...
def purchase(product)
product.logic
self.step_3_profit
etc
end
end
Контроллер работает аналогично, хотя я обычно думаю об этом пассивным голосом (например, «какой глагол *»)1008 * делается для что существительное ", а не" что существительное делает то, что глагол ". Например, если был куплен Product
, это может быть от POST
до /products/1/purchase
, сследующий код контроллера:
class ProductsController < ApplicationController
include SessionsHelper
def purchase
current_user.purchase Product.find(params[:id])
do_view_stuff
end
end
Используя эти «условные обозначения», я легко могу найти логику в своем приложении, думая о том, какой глагол делается для какого существительного.