PaperTrail によって制御されるバージョンを持つ City クラスがあります。私のシステムには、Devise によって管理されているユーザーがいます。City クラスの特定のバージョンを編集したユーザーとの関係を持ちたいと考えています。
そのために、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
これにより、特定のユーザーが作成したエディションを取得できます。たとえば、次のようになります。
User.last.editions
最後のユーザーからエディション (PaperTrail::Version オブジェクト) のリストを取得します。
次に、特定の都市を編集したユーザーのインスタンスを取得するのは簡単だと思いました。たとえば、最初の都市の最後のバージョンを編集したユーザーのユーザー インスタンスを取得します。
# NoMethodError: undefined method `user' for #<PaperTrail::Version:0x000000051d0da8>
City.first.versions.last.user
そうでない場合、PaperTrail::Version の「ユーザー」メソッドにアクセスできるようにモデルを構成するにはどうすればよいですか?
Ps .: 私が行ったようにモデル PaperTrail::Version を作成する必要があったかどうかはわかりませんが、その方向で別の方法を考え出すことはできませんでした。