最佳实践:我应该对静态数据使用 AR 模型还是全局哈希?

2024-02-12

我正在考虑建立一个社交网站。我的用户模型应该有一个属性“eyecolor”,可以使用选择框/下拉列表在视图页面上设置该属性。

我的问题: -> 我应该制作 AR 模型还是应该对数据使用全局哈希/常量? “静态模型”有最佳实践吗?

以及如何在没有 AR 模型的情况下将以下内容与关系关联起来:

u = User.first 
u.eyecolor 
==> 1 (not the eyecolor-string!)

我需要的是眼睛颜色字符串:

u = User.first 
u.eyecolor 
==> "brown"

谢谢, 对不起,我的英语不好!


您可以创建一个模型来处理您的眼睛颜色逻辑:

class EyeColor
   COLORS = ['blue','brown','hazel']

   attr_accessor :color

   # Some logic methods...
   def is_brown?
     self.color == 'brown'
   end

end

注意:此模型不是 Active Record 模型,但它确实为您尝试建模的现实世界对象创建了一个抽象。

编辑:我也喜欢这种方法,而不是全局散列,因为它可以在 EyeColor 中组织静态定义,而不是在程序中浮动,这使得该定义的位置很清楚。

<%= select :user, :eye_color, EyeColor::COLORS %>

编辑:向谓词方法添加问号。

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

最佳实践:我应该对静态数据使用 AR 模型还是全局哈希? 的相关文章

  • Rails 中对多个域/子域的支持

    我有一个 Rails 应用程序 它的设置与 Tumblr 类似 也就是说 您可以选择 1 子域名托管 your username myapp com 2 域名托管 your username com 两者都会转发到使用我的应用程序创建的该用
  • 如何使用 Cucumber 和 Rspec 测试 Rails 3 引擎?

    如果这个问题有点主观 我深表歉意 我正在尝试找出使用 Cucumber 和 Rspec 测试 Rails 3 引擎的最佳方法 为了测试引擎 需要 Rails 3 应用程序 这是我目前正在做的事情 通过运行以下命令将 Rails 测试应用程序
  • 是否可以禁用特定 jQuery Ajax 调用的 Turbolinks 以防止页面刷新和滚动?

    我有一个 Rails 5 应用程序 非常想使用 Turbolinks 在应用程序中 有几个 PATCH ajax 调用 它们只是用新数据更新服务器 但不需要担心更新页面的状态 每当这些 ajax 请求返回时 Turbolinks 就会刷新页
  • Rails error_messages 帮助器

    这是一段很常见的代码 First name br error messages是一个辅助方法 但我很难找到它的文档 为什么呢 我在这里找到它们 error messages 具有相同的参数错误消息 http apidock com rail
  • 使用 Paperclip 保存文件而不上传

    我有一个简短的问题 是否可以保存文件而不实际通过表单上传 例如 假设我正在查看电子邮件中的附件 并且我想使用回形针保存它们 我该怎么做呢 我是否必须在某处手动调用 save file 或类似的东西 任何帮助将非常感激 我有一个 rake 任
  • 如何让 Twilio 在hangup() 被触发时停止拨号?

    我一直在使用 twilio ruby gem 开发 Twilio 应用程序 但我陷入了一个部分 为呼叫构建 TwiML 响应 我拨打一些号码 以便他们也可以接听呼叫 def handle gather response Twilio Twi
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • STI 在遗传类型之间发生变化。

    在我的模型中 我像这样使用 STI 车辆型号 vehicle rb class Vehicle lt ActiveRecord Base end 车型 car rb class Car lt Vehicle end 总线模型 bus rb
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • 从表单中选择枚举以设置角色

    Ruby on Rails 4 1 我正在将 Devise 与枚举角色一起使用 目前 它在创建用户时使用默认角色 我想在创建用户的表单中添加一个字段来设置枚举角色 I read this https github com RailsApps
  • factory_girl + rspec 似乎并没有在每个示例后回滚更改

    类似于这里描述的问题 http rpheath com posts 411 how to use factory girl with rspec http rpheath com posts 411 how to use factory g
  • Rails 中的漂亮路径

    我有一个类别模型 我使用默认的脚手架来路由它resources categories 我想知道是否有办法改变路径 category id to category name 我补充道 match categories name gt cate
  • 随机显示 NoMethodError:未定义的方法“空?”对于 0:Fixnum

    它在我的本地计算机上运行良好 但使用 Puma Web 服务器在 Heroku 上的rails admin 中出现以下错误 这是我使用 enumerize 的方式 enumerize date type in last date 0 beg
  • 为什么 Rails 中的 CSRF 令牌不会阻止多个选项卡正常工作?

    在阅读了 Rails 中 CSRF 保护的工作原理后 我尝试通过执行以下操作来触发 CSRF 保护 注意 我们使用基于 cookie 的会话 访问登录页面 检查元中的 CSRF 令牌 gt abc123 打开第二个浏览器选项卡 然后访问相同
  • 查找日期时间与今天日期匹配的记录 - Ruby on Rails

    我有一个交易表 需要查找日期与今天的日期匹配的记录 从 Rails 控制台 我需要匹配的日期字段如下所示 我已经分配了一条记录来进行测试 ruby 1 9 2 p0 gt deal start gt Tue 10 May 2011 00 0
  • 从使用heroku发送的邮件中删除“via sendgrid.me”

    我正在使用免费的 sendgrid 计划从 Heroku 上托管的 Rails 应用程序发送电子邮件 我使用以下组合进行设置这些说明 http devcenter heroku com articles sendgrid and 本教程 h
  • 将 Rails 更新到特定版本

    如何将 Rails 更新到特定版本 我的本地计算机上有 Rails 3 2 2 但我需要更新到版本 3 2 3 如果我执行gem update rails 将会更新到最新的3 2 6版本 我怎样才能做到这一点 gem install rai
  • mail_form gem 与 sidekiq 工作者

    怎么做邮件表格gem 与 sidekiq 工作人员一起工作吗 https github com plataformatec mail form https github com plataformatec mail form 我可能做错了什
  • ruby on Rails“usr/bin/env:‘ruby2.3’:没有这样的文件或目录”

    我打字时遇到问题bundle exec rake db migrate在终端上 然后我收到了类似 usr bin env ruby2 3 No such file or directory 的结果 我遇到了同样的问题 但是运行时 rails
  • Devise + CanCan 只是阻止其他用户编辑对象

    您如何防止其他用户编辑对象 例如不属于自己的配置文件对象 大多数在线示例都是具有多个用户角色的复杂示例 我无法使其正常工作 但必须很简单 def initialize user can update Profile do profile p

随机推荐

  • Odoo15 - ModuleNotFoundError:没有名为“PyPDF2”的模块

    我是 Odoo 的新手 我使用 pyenv 来托管 odoo 和所有依赖项 全部在 odoo 系统用户下 我能够启动 odoo 服务 systemctl status odoo 15 odoo 15 service Odoo15 Loade
  • 使用 PDO 的 mysql_num_rows 替代方案

    现在我有一个 PHP 文件 它执行 MYSQL 查询 然后计算行数 如下所示 count mysql num rows result if count 1 message array status gt ok else message ar
  • 列表理解:为每个项目返回两个(或更多)项目[重复]

    这个问题在这里已经有答案了 是否可以为列表理解中的每个项目返回 2 个 或更多 项目 我想要什么 示例 f x g x for x in range n 应该返回 f 0 g 0 f 1 g 1 f n 1 g n 1 因此 可以用一些东西
  • C++中的私有拷贝构造函数有什么用

    人们为什么要定义私有复制构造函数 什么时候将复制构造函数和赋值运算符设为私有是一个好的设计 如果类中没有作为唯一对象 如文件名 的指针或句柄的成员 那么在其他情况下 私有复制构造函数是个好主意吗 同样的问题也适用于赋值运算符 鉴于大多数 C
  • 按 Enter 键时 AngularJS 表单未提交

    我试图在用户按 Enter 键时提交登录表单 单击 登录 按钮时 该表单工作得很好 但按 Enter 不起作用 而且会导致奇怪的行为 关联的函数ng submit没有被执行 按 Enter 后不再显示错误消息 登录失败 这是我的标记
  • Bluecloth v2.0.10 在 Windows 7 中无法正常工作

    对于 Ruby 187 我从以下位置下载了 devkit http rubyinstaller org downloads http rubyinstaller org downloads并按照说明进行操作https github com
  • 如何更改 FireMonkey 中的编辑控件背景颜色?

    我只是找不到更改移动 FireMonkey 应用程序中编辑控件背景颜色的方法 我不知道移动版 FMX 但在 Mac Win 版 FMX 中 您应该执行以下步骤 右键单击 TEdit 并选择编辑自定义样式 在 结构 窗口中 展开编辑样式 T布
  • 如何使用函数初始化数组? [复制]

    这个问题在这里已经有答案了 我想在 Rust 中创建一个包含 10 个空向量的数组 但是 Vec new 10 不起作用Vec不执行Copy 我该如何做到这一点 更一般地说 如何通过重复调用函数来初始化数组 从 Rust 1 63 开始 U
  • 使用反射复制构造函数[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 100 个字段的基类和一个包含 2 个字段的派生类 我希望通过调用基类中的 getter
  • 从商店下载全新版本后,Expo 中的 OTA 更新是否会在首次打开时启动?

    我使用 React Native 开发了一个应用程序 并通过 Expo 分发了它 我将最终版本发布到 Google Play 和 Apple Store 一段时间后我发现世博会的出版文档 https docs expo io version
  • 将cypress测试框架添加到Maven pom.xml

    尝试在 Maven 项目中使用新的 cypress 框架 文档只有一个 npm 模块设置示例 npm install cypress 和一个 package json 使用示例 如何将其转换为 Maven 依赖项中的用法 您也可以直接下载C
  • Xcode“来自调试器的消息:对 k 数据包收到意外响应:正常”

    在模拟器上测试我的应用程序时收到此消息 来自调试器的消息 对 k 数据包收到意外响应 正常 这是什么意思 我的应用程序是否存在任何危险 使用 Xcode 6 4 和 7 2 如果你看一下文件进程GDBRemote cpp http llvm
  • 使用 BitmapSource 的 WPF 渲染性能

    我创建了一个 WPF 控件 继承自 FrameworkElement 它显示可以平移的平铺图形 每个图块为 256x256 像素 24bpp 我已经重写了 OnRender 在那里 我加载所有新图块 如 BitmapFrame 然后使用 D
  • 异步函数执行?

    在我的 iOS 应用程序中 我执行以下操作 viewDidAppear Load a spinner in a view on the top DSBezelActivityView newActivityViewForView self
  • ASP.NET 和 C# 重定向

    我正在为学校做一个项目 这是一个额外的学分部分 我有一个使用母版页在 VS 2010 中启动的项目 我想做的是获得一个 提交 按钮 将人们重定向到 MyAccounts aspx 页面 我当前的按钮 ASP 部分代码如下所示
  • 将 jsPDF 生成的两个 PDF 合并为一个文档

    我正在使用 jsPDF 从 HTML 生成文档 使用 html 方法 并且效果很好 但现在我需要做下一步 创建 jsPDF 对象 使用以下内容添加内容 html method 将新页面添加到创建的文档中 使用相同的内容将内容添加到第二页 h
  • 在春季测试@Scheduled

    Spring 提供了使用注释按特定时间间隔安排和执行任务的可能性 例如 Scheduled http static springsource org spring docs 3 0 x reference scheduling html 有
  • 如何在 ms access 2007 查询中声明和设置变量

    我想在 ms access 2007 数据库查询中声明和设置变量 我想将2个数据库查询结果存储在2个变量中 因为执行后它们是整数或字符串类型 我想知道如何声明和设置变量 SQL Server 等效项是这样的 declare var1 var
  • 如何让断言等待 IdlingResource 断言

    我想使用空闲资源 因为我在应用程序中使用 RxJava 和 EventBus 有时我的测试失败 我认为这是因为同步 依赖项 androidTestCompile com android support test runner 0 4 and
  • 最佳实践:我应该对静态数据使用 AR 模型还是全局哈希?

    我正在考虑建立一个社交网站 我的用户模型应该有一个属性 eyecolor 可以使用选择框 下拉列表在视图页面上设置该属性 我的问题 gt 我应该制作 AR 模型还是应该对数据使用全局哈希 常量 静态模型 有最佳实践吗 以及如何在没有 AR