当前位置:  开发笔记 > 编程语言 > 正文

最佳实践:我应该使用AR模型还是全局Hash来获取静态数据?

如何解决《最佳实践:我应该使用AR模型还是全局Hash来获取静态数据?》经验,为你挑选了2个好方法。

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

我的问题: - >我应该制作AR模型还是应该使用全局哈希/常量来获取数据?是否有"静态模型"的最佳实践?

如何在没有AR模型的情况下关联以下关系:

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

我需要的是eyecolor-string:

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

谢谢,抱歉我的英语不好!



1> berlin.ab..:

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

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 %>

编辑:为谓词方法添加问号.



2> Matt Darby..:

你想要的是一个常数.我把它们放在config/initializers/constants.rb中的一个文件中; 那样他们都在同一个地方.

EyeColors = %w{Blue Brown Hazel Green}

在您的表单中只需:

<%= f.select :eye_color, EyeColors %>

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有