Какие-нибудь примеры использования Sinatra с acts_as_audited? - PullRequest
0 голосов
/ 05 октября 2011

background : я создаю веб-приложение, используя Sinatra и ActiveRecord, и я стремлюсь использовать преимущества acts_as_audited (согласно https://github.com/collectiveidea/acts_as_audited). Документы для acts_as_audited предположим, что я буду использовать Rails, и поэтому предположим, что я буду использовать Rails для генерации необходимых миграций. Я не нашел примеров использования acts_as_audited с Sinatra.

Итак, мой вопрос : Может ли кто-нибудь указать мне на пример использования Sinatra и ActiveRecord с acts_as_audited?

1 Ответ

2 голосов
/ 06 октября 2011

Я смог заставить это работать, используя Audit.as_user метод. Используя этот метод, вы можете проверять записи, как если бы изменения были внесены объектом пользователя, который вы передаете.

Вот простой пример.

# This is my User model, I want to audit email address changes to it.
class User < ActiveRecord::Base
  acts_as_audited
  # user has :email attribute
  ...
end

# This is what I would call in my Sinatra code.
# user is an instance of my User class
...
Audit.as_user(user) do
  user.audit_comment = "updating email from sinatra"
  user.update_attribute(:email, 'foo@bar.com')
end
...

Более сложный пример ...

# Now I have a User model and a Comments model and I 
# want to audit when I create a comment from Sinatra
class User < ActiveRecord::Base
  has_many :comments
  acts_as_audited
  ...
end

class Comment < ActiveRecord::Base
  belongs_to :user
  acts_as_audited
  # has a :body attribute
  ...
end

# This is what I would call in my Sinatra code.
# Again, user is an instance of my User class
...
Audit.as_user(user) do
  user.comments.create(
    :body => "Body of Comment", 
    :audit_comment => "Creating Comment from Sinatra"
  )
end
...