Я довольно новичок в Ruby on Rails и, как разработчик C #, когда я хочу повторно использовать код (для класса репозитория), я мог бы поместить его в базовый класс типа <T>
, чтобы иметь возможность делать как то так:
public virtual IEnumerable<T> GetAll()
{
return Context<T>.GetAll();
}
Если мне нужно выполнить какую-либо собственную логику, я, конечно, мог бы переопределить метод в моем хранилище 'User'.
В Ruby я знаю, что вы можете сделать это:
class UsersController < ApplicationController
Это позволит получить доступ ко всем методам в ApplicationController и его родительских классах. При использовании скаффолдинга он генерирует следующий метод в каждом из моих дочерних классов:
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end
В итоге я получу 10 классов с одинаковым методом, но единственное отличие - это «User.all», «Post.all» и т. Д.
Как бы я сделал этот метод универсальным, чтобы я мог поместить его в мой класс ApplicationController?
Спасибо за любую помощь, которую вы можете оказать новичку в Ruby on Rails.