相关模型的每个实例的活动管理范围

2023-11-27

我对动态活动管理范围有疑问。我试图为我的应用程序中“项目”的每个“经理”创建一个范围。但是,当创建新的经理(或分配给项目)时,范围似乎不会更新,但如果我重新启动服务器,它们会更新。所以代码本身“有效”,但显然不是按照我希望的方式。我是一个 ruby​​/rails 菜鸟,所以我不确定是否需要做一些事情以某种方式“刷新”范围。

仅供参考,我在 Heroku Cedar 上使用 Rails 3.2 和 ActiveAdmin

这是有问题的代码(可以工作,但仅在服务器重新启动后引入新的管理器):


Manager.find_each do |m|
  scope m.first_name do |projects|
    projects.where(:manager_id => m.id)
  end
end

以及整个 Active Admin 项目模型:

ActiveAdmin.register Project do
 menu :priority => 1
 index do
  column :name
  column :company_name
  column :status
  column :projection do |project|
   number_to_currency project.projection
  end
  column :updated_at
  default_actions
 end

 scope :all
 scope :working, :default => true do |projects|
  projects.where(:status => 'working')
 end

 Manager.find_each do |m|
  scope m.first_name do |projects|
    projects.where(:manager_id => m.id)
  end
 end
end

这是此问题的实际解决方案...尽管使用过滤器更理想的稳定性和维护性,但这在 ActiveAdmin 中看起来更好,并且更加用户友好,因为范围变成了漂亮的选项卡。

这有点像黑客,但在适当的情况下它是一个可行的解决方案:

诀窍是更新控制器索引操作的 before_filter 中的范围.

如果您在资源上创建了许多范围,这可能会变得很糟糕(尽管您可以轻松设置一些限制)

ActiveAdmin.register Project do
  menu :priority => 1
  index do
    column :name
    column :company_name
    column :status
    column :projection do |project|
      number_to_currency project.projection
    end
    column :updated_at
    default_actions
  end

  scope :all
  scope :working, :default => true do |projects|
    projects.where(:status => 'working')
  end

  controller do
    before_filter :update_scopes, :only => :index

    def update_scopes
      resource = active_admin_config

      Manager.all.each do |m|
        next if resource.scopes.any? { |scope| scope.name == m.first_name }
        resource.scopes << (ActiveAdmin::Scope.new m.first_name do |projects|
          projects.where(:manager_id => m.id)
        end)
      end

      # try something like this for deletions (untested)
      resource.scopes.delete_if do |scope|
        !(Manager.all.any? { |m| scope.name == m.first_name } || ['all', 'working'].include?(scope.name)) # don't delete other scopes you have defined
      end

    end
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相关模型的每个实例的活动管理范围 的相关文章

  • VIM 分块插入

    我想在 VIM 中选定的文本块的开头插入一个哈希 Ruby 注释 我在可视模式下选择了线条 但如何对所有线条执行相同的操作 您有两个主要选择 在块视觉模式中选择 ctrl v 然后使用I沿着整个块的左侧插入相同的东西 相似地A追加 看分块运
  • Heroku 上的 Django - 损坏的管理静态文件

    我有一个在 Heroku Cedar 上运行的 Django 应用程序 按照以下说明进行配置https devcenter heroku com articles django https devcenter heroku com arti
  • Ruby on Rails:设计 http://0.0.0.0:3000/users/sign_out 问题

    http 0 0 0 0 3000 users sign in http 0 0 0 0 3000 users sign in有效但是http 0 0 0 0 3000 users sign out http 0 0 0 0 3000 us
  • Ruby 中对象属性的 Uniq

    在数组中选择一个或多个属性唯一的对象的最优雅的方法是什么 这些对象存储在 ActiveRecord 中 因此使用 AR 的方法也可以 Use Array uniq http ruby doc org core 1 9 2 Array htm
  • sunspot_rails gem - “ Errno:: ECONNREFUSED (连接被拒绝 - 连接 (2)) ”

    我使用宝石 sunspot railshttps github com outoftime sunspot https github com outoftime sunspot我按照上面的说明做了一切http railscasts com
  • 捆绑安装--无需生产有什么作用?

    我见过有人使用这个 我自己也按照指示使用它 我只是没有真正理解它的实际作用 我完全理解bundle install部分 但不是 without production一部分 它有什么作用以及我为什么要使用它 如果您的 Gemfile 中有一个
  • 更新 Rails 应用程序的服务器端进度

    我想在 Ruby on Rails 应用程序中上传并处理文件 文件上传通常很短 但服务器端处理可能需要一些时间 超过 20 秒 所以我想给用户一些指示 比无意义的 正在处理 屏幕更好的东西 我正在尝试在视图中使用以下代码 update参数的
  • 未定义的方法“stringify_keys!”轨道上的红宝石

    我有这个代码 def addcar car Car new params car render action gt list end p p 它给了我这个错误 未定义的方法 stringify keys 对于 本田 字符串 我不明白出了什么
  • 自定义收集路径的polymorphic_path

    我有以下路线定义 resources documents do collection do post filter end end 以及以下模型结构 class Document lt ActiveRecord Base belongs t
  • ActionMailer最佳实践:调用模型或控制器中的方法?

    发送电子邮件通常是在对模型执行操作后调用的 但电子邮件本身是一个视图操作 我正在寻找您如何思考要问自己哪些问题来确定将操作邮件程序方法调用放在哪里 我见过 使用过它们 在模型方法中 相关但独立的关注点耦合不良 在模型的回调中 例如 afte
  • 从 Rails 获取所有模型的列表[重复]

    这个问题在这里已经有答案了 我需要一个包含所有模型 类名 的列表 这些模型末尾有模式 Cube 例子 我所有的模型 ModelFoo ModelBar ModelBarCube Mode2BarCube 我需要的 ModelBarCube
  • 限制 Rails 应用程序生成的出站 API 调用

    我不是专业的网络开发人员 但我喜欢把浏览网站作为一种爱好 最近 我一直在开发一个 Rails 应用程序作为一个项目来帮助我学习框架 我的玩具应用程序的目标是通过其他服务的 API 获取数据 并让我可以使用搜索功能进行查询 但是 我想要从中提
  • 如何在 ruby​​ Kernel.exec 之后运行代码

    我有以下红宝石外壳 usr bin env ruby stdin each line do line pid fork exec line puts after exec gt Process pid Process wait pid en
  • Rspec——需要存根在另一个文件中调用的 File.open

    在我的测试中 我正在初始化一个名为的新类Package带有一些参数 在此类的初始化中 我打开一个在远程机器上可用的文件 但不是本地常见的文件 我想知道如何在测试中对该方法进行存根 我正在使用 rspec 和 mocha 我尝试过类似的东西
  • 如何仅将数字形式的字符串哈希值转换为整数

    我有从几个不同的 XML 数据库转储导入的哈希行 如下所示 但具有不同的键 Id gt 1 Name gt Cat Description gt Feline Count gt 123 我尝试使用 to i但它将非数字字符串转换为0 Fel
  • Rails 3 在迁移问题中添加外键

    有谁知道使用迁移在 Rails 3 中创建外键的方法吗 the 外国人宝石 https github com matthuhiggins foreigner对我来说效果很好 它向 Rails 迁移添加了一些方法 可以轻松创建和删除外键 ex
  • Ruby 中 return 的意义是什么?

    有什么区别return只需放置一个变量 如下所示 没有回报 def write code number of errors if number of errors gt 1 mood Ask me later else mood No Pr
  • 在 Rails 3 项目中加载种子数据

    到目前为止 我一直在使用 Fixtures 以及 rake 任务来为我的数据库创建一些种子数据 这工作得很好 但我突然遇到了奇怪的问题 比如在模型中获取 autogen id 1 2 3 然后在连接模型中获取错误的 id 使得关联根本不起作
  • 如何访问 IRB 中所需的 Ruby 文件中定义的变量?

    文件welcome rb包含 welcome message hi there 但在 IRB 中 我无法访问刚刚创建的变量 require welcome rb puts welcome message gt undefined local
  • PG::UniqueViolation:错误:重复的键值违反了唯一约束

    我在 Rails 4 2 6 中使用 devise 4 2 0 在我的应用程序中 我在用户和配置文件表中使用嵌套属性 仅当我创建新记录时才需要验证密码 当我更新创建的记录时 密码字段不会验证 My user rb文件是 class User

随机推荐

  • var 关键字并不总是有效?

    C VS 2010 有人请解释一下为什么我不能使用var在我下面的代码中 var props TypeDescriptor GetProperties adapter error CS1061 object does not contain
  • 拟合3D点python

    我有 python 代码 可以生成数字 x y 和 z 的三元组列表 我想使用 scipy curve fit 拟合 z f x y 这是一些不起作用的代码 A 19 20 24 10 40 28 10 50 31 def func x y
  • 为什么我们需要 SQLite 中的 GLOB 子句?

    我是一名 Android 开发人员 最近在 SQLite 中遇到了 GLOB 子句 我不明白为什么我们需要 GLOB 因为 LIKE 已经就位了 这两个子句都有通配符来表示单个和多个字符 唯一的区别是 GLOB 区分大小写 但这就是全部吗
  • 如何在带有警告的情况下对 data.table 中的组进行采样

    这个问题非常类似于对 data table 中每组内的随机行进行采样 区别在于一个细微之处 我没有足够的声誉来讨论这个问题本身 让我们稍微改变一下 Christopher Manning 的初始数据 gt DT data table a c
  • Bootstrap 的 JavaScript 需要 jQuery 而 jQuery 已经加载

    我在加载时遇到错误Bootstrap库 因为它总是给出此错误 未捕获的错误 Bootstrap 的 JavaScript 需要 jQuery 尽管如此 我还是附上了Bootstrap库确定后jQuery已加载但仍然出现错误 我正在使用以下代
  • Typescript:使用私有、公共和无声明类变量之间的区别

    有什么区别 A class foo bar string B class foo private bar string C class foo public bar string 显然我可以使用以下命令在所有三种情况下访问 bar var
  • 实施键盘快捷键

    我目前使用的是onKeyDown事件和一个if else创建键盘快捷键的语句 if Keyboard Modifiers ModifierKeys Shift ModifierKeys Shift e Key Key Tab else if
  • MUI v5 + Storybook:主题和字体系列在 Storybook 中不起作用

    我遇到一个问题 MUI 主题在 Codesandbox 中有效 但在 Storybook 中无效 演示展示它在没有故事书的情况下工作 https codesandbox io s typescript material ui textfie
  • 使用 devtools::install_github() 安装无法检测构建工具

    这是我第一次尝试下载 Github 包 在 MacOS Big Sur v11 2 1 上使用 RStudio v1 2 5033 时遇到了一些问题 最初 运行时 library devtools devtools install gith
  • 在Python中将分钟转换为HH:MM格式[重复]

    这个问题在这里已经有答案了 首先 我想指出我是Python的初学者 我的问题是我不知道在 Python 中将分钟转换为 HH MM 格式的正确方法是什么 任何帮助表示赞赏 Use the divmod 功能 02d 02d format d
  • 如何从授权的 access_token 创建 GoogleCredential?

    我有一个像这样的 OAuth2 令牌 access token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx expires in 3600 refresh token xxxxxxxxxxxxxxx
  • 客户端已断开连接

    我在 WebAPI 日志中收到以下错误 System Web HttpException 0x800703E3 客户端已断开连接 在 System Web Hosting IIS7WorkerRequest EndRead IAsyncRe
  • 如何使用 winapi 了解 Windows 文件系统中的文件何时以及哪些文件被更改

    我为教育目的制作了具有间谍软件功能的程序 我需要在程序中知道文件系统何时更改文件以及正在更改哪些文件 我怎样才能在 C 中做到这一点 在 Windows 上 查看SHChangeNotifyRegister 它不仅告诉您发生了何种类型的更改
  • 如何连接Heroku Redis TLS节点?

    我似乎无法在 Node 上使用 TLS 连接到 Heroku Redis 这些文档并没有多大帮助 https devcenter heroku com articles secure heroku redis 有人有一个有效的例子吗 我应该
  • Markdown 将 JavaScript 中的双星号转换为粗体文本

    我正在尝试制作自己的可降价文本区域 就像 Stackoverflow 所做的那样 目标是让人们能够打字 blah blah 在文本区域中 并在 div 中输出 span style font weight bold blah blah sp
  • PHP:对象分配给静态属性,这是非法的吗?

    将某个对象分配给静态属性是非法的吗 我在下面的代码中收到 HTTP 500 错误 require once class linkedlist php class SinglyLinkedlistTester public static ll
  • 创建自定义 TSetProperty 属性编辑器

    我正在尝试为某些自定义组件创建自定义属性编辑器 自定义属性编辑器旨在编辑一些设置属性 例如 type TButtonOption boOption1 boOption2 boOption3 TButtonOptions set of TBu
  • 在 VB.NET 字符数组中添加“c”有什么作用?

    我想使用 String 方法 IndexOfAny 来检查指定字符串中是否存在字符 我在网上找到的使用 IndexOfAny 方法的示例在使用 VB NET 时在字符数组中的每个字符后面包含一个 c 然而 当我查看 VB NET 中简单字符
  • 无锁同步

    我的问题与多线程无锁同步有关 我想知道以下内容 实现这一目标的一般方法是什么 我在某处读到过有关 LockFreePrimitives 的内容 如 CompareAndExchange CAS 或 DoubleCompareAndExcha
  • 相关模型的每个实例的活动管理范围

    我对动态活动管理范围有疑问 我试图为我的应用程序中 项目 的每个 经理 创建一个范围 但是 当创建新的经理 或分配给项目 时 范围似乎不会更新 但如果我重新启动服务器 它们会更新 所以代码本身 有效 但显然不是按照我希望的方式 我是一个 r