Я пытаюсь использовать полиморфную модель комментариев для модели публикации, модели загрузки и т. д. Обычно у меня был бы ресурс @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. Спасибо