Как мне войти создать действия? - PullRequest
2 голосов
/ 23 июня 2011

Я пытаюсь создать функцию регистрации в моем приложении RoR, которая регистрирует все действия, выполняемые пользователем на данном контроллере в модели.Я пытался реализовать его с помощью фильтров, но они не решили мою проблему, потому что они не позволяли мне правильно регистрировать действия «создать».

«Создать» действия сложно, потому что, когда фильтры до / посленазывается, действие еще не сохранено, поэтому у меня нет соответствующего идентификатора модели (который мне нужен).

Я знаю, что могу использовать «after_commit», но это значительно увеличитсложность функции ведения журнала, поскольку «параметры», сохраненные в каждой записи журнала, предоставляются контроллеру, но не модели.

Есть ли способ динамически добавить фильтр «after_commit» к экземпляруActiveRecord?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2011

Вот как я регистрируюсь, у меня есть пользовательский контроллер, создающий действие, подобное этому:

def create
    @user = User.new(params[:user])
    if @user.save
        flash[:notice] = "Welcome, #{@user.username}"
        redirect_to(:controller => "users", :action => "home")
        session[:id] = @user.id
    else
        render("home")
    end
end

Теперь я хотел бы зарегистрировать, что пользователь был создан, тогда я делаю это:Сначала создайте класс AuditLogger в User.rb (модель):

class User < ActiveRecord::Base
    ...some stuff other....
    class AuditLogger < Logger
       def format_message(severity, timestamp, progname, msg)
       "#{timestamp.to_formatted_s(:db)} #{severity} #{msg}\n"
    end 
end

Затем вернитесь к контроллеру (users.rb)

def create
    @user = User.new(params[:user])
    if @user.save
        logfile = File.open("#{Rails.root}/log/my_log.log", 'a')    
        audit_log = AuditLogger.new(logfile)
        audit_log.info "#{@user.firstname} was created successfully"
        redirect_to(:controller => "users", :action => "home")
    else
        render("home")
    end
end

Также вам нужно будет создать файл вваш каталог журналов называется my_log.log.Надеюсь, это должно быть в состоянии войти.Я знаю, что это не лучшее решение, и там у меня есть лучшие способы сделать это, но в то время мне нужно было что-то срочно работать, так что я застрял с этим.

Оформить заказ по ссылкам: подсказки для рельсов альтернативное решение для каротажа

0 голосов
/ 23 июня 2011

Прочитайте это, я думаю, что это хорошее решение: Уведомления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...