Ruby on rails 3 Rails 3、PaperTrail和Whodunnit用户实例

Ruby on rails 3 Rails 3、PaperTrail和Whodunnit用户实例,ruby-on-rails-3,paper-trail-gem,Ruby On Rails 3,Paper Trail Gem,我有一个City类,它的版本由PaperTrail控制。我的系统有由Desive管理的用户。我想在编辑城市类特定版本的用户之间建立关系 为此,我使用Rails 3.2.15和Paper Trail 3.0.0尝试了以下配置: class City < ActiveRecord::Base has_paper_trail end class User < ActiveRecord::Base has_many :editions, :foreign_key => 'wh

我有一个City类,它的版本由PaperTrail控制。我的系统有由Desive管理的用户。我想在编辑城市类特定版本的用户之间建立关系

为此,我使用Rails 3.2.15和Paper Trail 3.0.0尝试了以下配置:

class City < ActiveRecord::Base
  has_paper_trail
end

class User < ActiveRecord::Base
  has_many :editions, :foreign_key => 'whodunnit', :class_name => "PaperTrail::Version"
end

class PaperTrail::Version < ActiveRecord::Base
  belongs_to :user
end
如果不是这样,我应该如何配置我的模型以访问PaperTrail::Version上的“user”方法


注:我不确定我是否应该像以前那样创建一个模型PaperTrail::Version,但我没有找到朝这个方向发展的另一种方法。

我自己找到了答案。一切都基于PaperTrail::Version子类化和使用:class\u name选项。我的工作配置是:

class City < ActiveRecord::Base
  has_paper_trail, :class_name => 'Version'
end

class User < ActiveRecord::Base
  has_many :editions, :foreign_key => 'whodunnit', :class_name => "Version"
end

class Version < PaperTrail::Version
  belongs_to :user, :foreign_key => 'whodunnit'
end
class City“Version”
结束
类用户'whodunnit',:类名=>“版本”
结束
类版本“whodunnit”
结束
现在,当调用特定版本的用户时,它返回用户whodunnit实例

City.first.versions.last.user
=> #<User id: 2, email: "xxxxxx@yyyyy.com", encrypted_password: ...>
City.first.versions.last.user
=> #

完美!默认情况下,这必须在书面记录中工作!在paper_trail的v4.0.0.beta2上,
has_paper_trail:class_name=>“Version”在
has_paper_trail
之后不带逗号运行。我不得不将此添加到城市模型中:
has_paper_trail versions:{class_name:'Version}
City.first.versions.last.user
=> #<User id: 2, email: "xxxxxx@yyyyy.com", encrypted_password: ...>