我有Devise模型Person
,将登录和管理rails_admin
应用程序。
我有一个名为Model
的模型,其中包含由mongoid-history
添加的updater
。
为了设置谁更新了我的故事,我需要这样做:
model = Model.new
model.updater = Person.first
model.save
根据这个link to github,我无法设置由Devise自动创建的current_person
,这意味着每次我的Model
出现问题时,我都需要手动设置updater
。
如何获取current_person
并将其设置为Model
,其中rails_admin's
操作发生?
我只知道我需要在initializers/rails_admin.rb
中为每个操作写一些东西
4条答案
按热度按时间omhiaaxx1#
无法从Model访问
current_user
,因为ActiveRecord模型可以独立于Rails应用程序使用,无需登录即可使用。控制器(经常)要求用户登录,从而访问用户会话和
current_user
方法,因此控制器必须在模型上设置更新程序。也许您可以在控制器中设置一个回调方法,该方法作用于修改模型的任何操作,并在那里设置更新器。
mgdq6dx12#
我已经找到了一个解决我问题的办法,但我不知道这是否是个好办法。
如果我想在
edit
操作中分配current_person
,我需要写这个:它创建一个隐藏字段,该字段具有当前登录人员的签名ID。
vshtjzan3#
Mr.D's answer似乎不起作用(至少从rails_admin 2. 0. 2开始);绑定没有
:view
密钥。正确的密钥现在是:controller
:bksxznpy4#
如果你没有一个属性来存储这个id,而只需要id来验证另一个操作,你可以为它创建一个属性:
型号: