我有一个activeadmin资源,它有一个属于:用户关系.

当我在active admin中创建该模型的新实例时,我想将当前登录的用户与创建该实例的用户相关联(我可以想象这是非常标准的东西).

所以我用它工作:

controller do
  def create
    @item = Item.new(params[:item])
    @item.user = current_curator
    super
  end 
end 

然而;)我只是想知道这是怎么回事?我只是希望将@item变量分配给用户,然后调用super会起作用(确实如此).我也开始查看Ruby ,但看不到它是如何工作的.

任何指点都很好.我想这是InheritedResources给你的?

谢谢

推荐答案

我遇到了类似的情况,我实际上不需要完全重写create方法.我真的只想在保存前注入属性,只想在创建时注入属性;与你的例子非常相似.在阅读了ActiveAdmin源代码后,我决定使用before_create来完成我需要的工作:

ActiveAdmin.register Product do
  before_create do |product|
    product.creator = current_user
  end
end

Ruby-on-rails相关问答推荐

Rails:嵌套命名空间产生一个奇怪的部分路径,导致MissingTemplate错误

Rails版本7.1.2:当验证失败且控制器发送422状态时,JS停止工作

如何从数组中提取值

为什么 Image_tag 产生images/...而不是assets/....?

GroupingError:错误:列必须出现在 GROUP BY 子句中或在聚合函数中使用

如何在 Rails 中注释掉 ERB?

rake assets:precompile try 连接到数据库

理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

基于 2 列定义唯一主键

用 url_for 查询参数?

如何找出现有 Rails 应用程序基于哪个 Rails 版本?

如何验证 ActiveRecord 中邮箱字段的格式?

关闭 Firefox 中文本字段的自动完成功能

如何为rails中的number_field添加默认值?

快速添加链接[:notice]

Vagrant上的Rails 4.2服务器端口转发不起作用

Rails:弃用警告:您没有设置 config.secret_key_base

保存用户偏好的最佳方法?

如何为 Rails 控制器添加延迟以进行测试?

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列