Определите их как вспомогательный метод. Но лучший подход - определить их как методы класса в соответствующих классах. А затем позвоните им напрямую.
def user_relation_count(user)
Relation.joins(account: :user).where(users: {id: user.id}).count
end
def user_orders_count(user)
Order.joins(account: :user).where(users: {id: user.id}).count
end
Можно установить тот же session_key в обоих приложениях. В appA environment.rb изменяют session_key, как это
Rails::Initializer.run do |config|
...
config.action_controller.session = {
:session_key => '_portal_session',
:secret => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
}
...
end
Сделайте то же в AppB. (не забудьте использовать тот же самый секрет),
Теперь у Вас есть сеансы совместной работы. Скажем, Вы используете restfull_authentication, который устанавливает переменную сеанса, названную user_id. Когда Вы проходите проверку подлинности в appA, он устанавливает user_id на сессии. Теперь, в appB просто необходимо проверить, существует ли user_id на сессии.
Это - полная схема, можно разработать больше использования этой идеи.
Если вы хотите создать решение единого входа для своих приложений, то я рекомендую взглянуть на RubyCAS раствор. Его также можно использовать для обеспечения единого входа в другие приложения, не относящиеся к Rails, а также для интеграции аутентификации с LDAP или другими провайдерами аутентификации.