Rails 模型调用控制器操作

2023-11-27

我需要从模型内部的方法调用控制器内部的操作。这是我在其他语言中经常做的事情(当使用 MVC 框架时),但是,我从未见过在 ruby​​ on Rails 中这样做。该操作不会渲染任何内容,它只是更新会话变量。


这实际上并不是您在 MVC 模式中通常会做的事情。您的模型实际上应该只包含业务逻辑(和数据访问)。您能否提供一些有关您要拨打的电话以及原因的信息?通常当你尝试做这样的事情时,会闻到某种东西不在它应该在的地方的味道。

我通常是这样看待它的:

  • 模型 - 这些是数据对象 还有业务逻辑的方法
  • 控制器 - 这些是操作 由您的应用程序获取,它们控制 模型并告诉他们该做什么,他们 控制视图告诉它做什么 发射
  • 视图 - 这是界面层, 它可以是任何格式(html、js、 xml)但它几乎没有逻辑 它

如果您尝试从模型调用控制器中的某些内容,则可能意味着模型中存在太多控制逻辑。

或者,也许您刚刚获得了一个可以在任何地方使用的方法(它是一个辅助方法,实际上与模型和控制器无关)。在这种情况下,您应该将其放在 /lib 目录中其自己的模块中。

编辑:是的,会话变量可能只应该在控制器中触摸/更新。也许您的模型中有太多控制类型的逻辑?也许重新考虑该逻辑与实际模型的关系有多密切(如果它实际上是控制器操作的一部分)。

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

Rails 模型调用控制器操作 的相关文章

  • RSpec 无法从 Factorygirl 中找到工厂

    我将在 Rails3 项目中将 RSpec 与 Factory Girl 一起使用 我已经安装了 Factory Girl 但它找不到工厂我有这个错误 Failure Error Factory build user should be v
  • 如何在实际作业中引用活动的delayed_job

    我正在研究一个解决方案来显示延迟作业的完成百分比 使用delayed job gem 目前 我的delayed jobs 表的数据库迁移如下所示 class CreateDelayedJobs lt ActiveRecord Migrati
  • 如何在 Rails 中获取“应用程序跟踪”而不是完整的详细回溯?

    在开发环境的Rails默认错误页面中 您可以查看三个回溯 1 Application Trace 2 Framework Trace和3 Full Trace 但是如何在 Rails 控制器中获取 应用程序跟踪 完整跟踪 exception
  • 回形针/乘客 NotIdentifiedByImageMagickError:

    当我尝试上传照片时红宝石 on Rails http en wikipedia org wiki Ruby on Rails using 回形针 http github com thoughtbot paperclip在我的本地机器上它运行
  • 文件位置 Rails 7 中的 Javascript 与样式表

    在使用导入映射功能的新默认 Rails 7 应用程序中 Javascript 存储在app javascript 而 CSS 位于app assets stylesheets 它们不仅位于不同的层次结构级别 而且javascript是奇异的
  • 如何更改 Rails 记录器以使用 rake 任务中的标准输出 (rails2)

    当我做 Rails logger debug 我的 rake 任务中的 hello world 我希望它记录到标准输出 如何在 rake 任务中将 Rails 记录器设置为 Logger new STDOUT 我希望我的应用程序在通过控制器
  • 带 Rails 6/Webpack 的 Gmap

    我正在尝试让以前与早期版本的 Rails 一起使用的 Google 地图设置使用 Rails 6 显示 显然 Rails 6 现在使用 webpack 来处理 javascript 资源 并且我无法让我的应用程序识别用于识别的 Gmaps
  • 如何将属性保存到 has_many :通过连接表,没有现有记录可供构建

    我有一个表单 可以使用以下命令创建新的子记录和新的父记录accepts nested attributes for 孩子和家长都有一个has many through像这样的关联 class Child lt ActiveRecord Ba
  • 如何使用 Cucumber 和 Rspec 测试 Rails 3 引擎?

    如果这个问题有点主观 我深表歉意 我正在尝试找出使用 Cucumber 和 Rspec 测试 Rails 3 引擎的最佳方法 为了测试引擎 需要 Rails 3 应用程序 这是我目前正在做的事情 通过运行以下命令将 Rails 测试应用程序
  • Rails 4 单选按钮表单助手,true 不验证

    我在 needs dist 上附加了简单的是或否单选按钮 当我提交表单时选择 否 它工作得很好 但是当我选择 是 时 它会抛出验证错误吗 它仅在 needs dist gt true 时有效 Model validates presence
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • 更新系统后RubyGems错误

    使用 sudo gem update system 更新 ruby 设置后尝试启动 Rails 控制台时 我尝试通过发出以下命令来执行 Rails 控制台rails c 我收到此错误 Users myusername rvm rubies
  • 装饰 Rails 中的属性

    我有一个name上的属性Person模型 每次我访问name属性 我想要name capitalize被退回 在模型内执行以下操作将不起作用 def name name capitalize end 那么还有什么选择呢 我建议您使用自定义格
  • Ruby on Rails:有关 validates_presence_of 的问题

    我的基于 ActiveRecord 的模型中有一个关系 如下所示 belongs to foo 我的模型应该始终在其中定义 foo 才能有效 我的问题是 当使用 validates presence 时 使用哪一个是合适的 validate
  • jqgrid如何动态创建列

    我正在尝试在 mvc 中实现 jquery 有一些关于此的教程 但我不希望 jquery 对列进行硬编码 或者实际上任何要硬编码的内容 这是应该是的逻辑在控制器中 所以 查看下面的代码 您将看到 colNames 和 colModel 我如
  • 如何使用 RSpec 测试 javascript 重定向?

    我正在使用 xhr post 与控制器交互 并且我期待重定向 在 js erb 中 我有 window location href address 手动测试 浏览器会正确重定向 我如何使用 RSpec 测试它 response should
  • jRails 是 Rails + jQuery 必须的吗?

    我是rails新手 使用rails 2 3 10 并且想使用jquery 特别是jquery ui 该项目是一个全新的项目 我计划使用 jquery ui 中的一些小部件 如 datapicker 和 selectable 等 我听说可以安
  • 从表单中选择枚举以设置角色

    Ruby on Rails 4 1 我正在将 Devise 与枚举角色一起使用 目前 它在创建用户时使用默认角色 我想在创建用户的表单中添加一个字段来设置枚举角色 I read this https github com RailsApps
  • 在 Rails 中将多个输入字段作为列表发布,而不是使用单独的名称。

    我想向控制器提交一个列表 其中包含form for 该列表应填充text fields 此实施将提交 some list列表中只有一个 text field 的值 如预期 我想要 X 数量text fields 作为列表提交 因为文本字段的
  • 新 Rails 应用程序出现问题

    我刚刚创建了一个新的rails应用程序 在CL上 使用rails new 我使用的是4 2 6 但似乎在我对应用程序执行任何操作之前我遇到了错误 first config environments development rb 53 in

随机推荐

  • 在 PostgreSQL 中动态生成交叉表列

    我正在尝试创建crosstabPostgreSQL 中的查询 使其自动生成crosstab列而不是对其进行硬编码 我编写了一个函数 可以动态生成我需要的列列表crosstab询问 这个想法是将这个函数的结果替换为crosstab使用动态sq
  • 解析Java源代码

    我被要求开发一个软件 它应该能够创建输入Java源代码的流程图 控制流 于是我开始研究并得出以下解决方案 要创建流程图 控制流 我必须识别给定源代码中的控制语句和函数调用现在我有两种识别方法 通过编写我自己的语法来解析源代码 我认为这是一个
  • 如何从外部软件调用证明助手Coq

    如何从外部软件调用证明助手Coq Coq 有一些 API 吗 Coq 命令行界面是否足够丰富 可以在文件中传递参数并在文件中接收响应 我对 Java 或 C 桥感兴趣 这是合理的问题 Coq 并不是一种常见的商业软件 人们可以从中获得开发人
  • 如何将匿名类型作为参数传递?

    如何将匿名类型作为参数传递给其他函数 考虑这个例子 var query from employee in employees select new Name employee Name Id employee Id LogEmployees
  • 全局 var 与共享实例 swift

    Swift 中的全局变量和共享实例有什么区别 它们各自的使用领域是什么 任何人都可以根据 Swift 澄清他们的概念吗 全局变量是在文件顶层声明的变量 所以如果我们有一个名为Bar 您可以存储对实例的引用Bar在这样的全局变量中 var b
  • 为什么材质 FAB 在禁用时不改变颜色?

    我正在禁用材质浮动操作按钮 但当禁用设置为 true 时 颜色不会改变 我认为 Material 有一个 FAB 主题 禁用后它应该变成浅灰色 我不想在每次启用 禁用背景时添加代码来更改背景 我目前使用的材料版本 1 1 0 在代码中我只是
  • Java JMenuItem 动作监听器

    我的 JMenuBar 上的 ActionListener 需要一些帮助 没有错误 但是 每次我单击 JMenuItem 时 它都会触发与 JMenuItem 关联的所有操作 我的问题是 我在 ActionListener 代码中做得正确吗
  • Crashlytics:“我们缺少一个 dSYM 来处理崩溃”[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 Crashlytics 说 我们缺少 dSYM 来处理崩溃 当我尝试从 Xcode 7 1 下载 dSYM 时 我得到 没有可供下载的 dsym 我今天遇到了同样的问题 iTunes
  • 获取字典的随机样本[重复]

    这个问题在这里已经有答案了 我正在使用一本大字典 由于某种原因 我还需要处理该字典中的小随机样本 我怎样才能得到这个小样本 例如长度为2 这是一个玩具模型 dy a 1 b 2 c 3 d 4 e 5 我需要在 dy 上执行一些涉及所有条目
  • 通过 buildForm() 中的 $options 访问变量

    我想传递一个布尔值给我的DogForm dogForm new DogForm null array has cats gt this gt getUser gt hasCats form this gt createForm dogFor
  • mysql 按日期选择总和组

    快速提问 我有下表 total o date 35 01 11 2009 19 32 44 41 5 01 12 2009 22 33 49 61 5 01 23 2009 22 08 24 66 02 01 2009 22 33 57 2
  • 获取 HTML5 范围滑块手柄的偏移位置

    有什么办法可以得到pixelHTML5 范围输入的滑块手柄的位置
  • Python 3.7 安装无法在 openSUSE Leap 42.3 上运行

    在 openSUSE Leap 42 3 上从源代码构建和安装 Python 3 7 0 时 安装到 usr local 的默认 configure 会出现严重的 python 错误 openSUSE Leap 42 3 Python3 软
  • 如何在没有嵌入的情况下使用tensorflow seq2seq?

    我一直在研究使用张量流进行时间序列预测的 LSTM 现在 我想尝试序列到序列 seq2seq 在官方网站上有一个教程 展示了带有嵌入的 NMT 那么 如何在没有嵌入的情况下使用这个新的 seq2seq 模块呢 直接使用时间序列 序列 1 E
  • matplotlib轮廓可以匹配像素边缘吗?

    如何勾画像素边界matplotlib 例如 对于如下所示的半随机数据集 the code block that follows is irrelevant import numpy as np k for s in 2103 1936 22
  • 为什么我可以匿名子类化枚举而不是最终类?

    这段代码 public class Sandbox public enum E VALUE Override public String toString return I m the value Override public Strin
  • jQuery 动画透明

    block li hover function this animate backgroundColor 000 function this animate backgroundColor fff 需要改变 fff到没有颜色 动画应该发生于
  • 使用 Typescript 时,es6 Map() 不会编译为 es5

    我刚刚开始第一次在项目中使用 Typescript 我真的很想使用 Map 来组织一小组键值对 不幸的是 当打字稿被编译 使用 gulp 和 gulp typescript 为普通 ES5 JavaScript 时 Map 仍然存在 我需要
  • 在 ASP.NET 中,获取请求的基本 URl 的最快方法是什么?

    在 ASP NET 中是否有快速获取方案 主机 端口 仅当不是 80 时 和应用程序路径的方法 据我所知 我需要组装以下部分 请求 Url 方案 Request Url SchemeDelimiter Request Url Authori
  • Rails 模型调用控制器操作

    我需要从模型内部的方法调用控制器内部的操作 这是我在其他语言中经常做的事情 当使用 MVC 框架时 但是 我从未见过在 ruby on Rails 中这样做 该操作不会渲染任何内容 它只是更新会话变量 这实际上并不是您在 MVC 模式中通常