validates_acceptance_of is for virtual (non-database-backed) attributes. If you want a database record of the agreement having been accepted, just make legal_agreement a boolean database field and then validate that legal_agreement == 1.
From the Rails API:
Encapsulates the pattern of wanting to validate the acceptance of a terms of service check box (or similar agreement). Example:
class Person < ActiveRecord::Base
validates_acceptance_of :terms_of_service validates_acceptance_of :eula, :message => "must be abided"
The terms_of_service attribute is entirely virtual.
No database column is needed. This check is performed only if terms_of_service is not nil and by default on save.