Я пытаюсь использовать модель полиморфного комментария для модели поста, модели загрузки и т. Д. Обычно у меня был бы ресурс @parent, чтобы связать один с другим, чтобы Rails выстроил отношения. Но поскольку это приложение в стиле мультитенантного субдомена, где все ресурсы также должны быть ограничены областью curent_account. Я борюсь с тем, как охватить ресурс @parent под current_accout.
В ApplicationController у меня есть метод current_account, метод find_parent и parent_collection:
#Application_controller
class ApplicationController < ActionController::Base
before_filter :current_account
def current_account
unless is_root_domain?
@current_account ||= Account.find_by_subdomain(request.subdomains.first)
end
@current_account
end
def find_parent
params.each do |name ,value|
@parent = $1.pluralize.classify.constantize.find(value) if name =~ /(.*?)_id/
return if @parent
end
end
def parent_collection
@parent_collection ||= current_account.send parent.pluralize
end
конец
#comments_controller with only @parent resource without reference to current_account
class CommentsController < ApplicationController
before_filter :find_parent
def new
@comment = @parent.comments.build
end
def create
@comment = @parent.comments.build(params[:comment])
.....
.....
end
end
#comments_controller using only current_account resource without reference to @parent
class CommentsController < ApplicationController
before_filter :current_account
def new
@comment = current_account.comments.build
end
def create
@comment = current_account.comments.build(params[:comment])
.....
.....
end
end
Любое руководство о том, как вызывать current_accout в контроллерах таким образом, чтобы @parent находился в нем, и есть ли необходимость в методе parent_collection, который я поместил в application_controller. Спасибо