文档章节

rails的设置与公告开发

moli
 moli
发布于 2016/05/09 01:41
字数 280
阅读 52
收藏 0
点赞 2
评论 0

开发一个“设置”功能,所以基于设置功能,开发一个公告等。

"设置"存在数据库中,本质上是一个K/V表。

比如现在有这样一个settings表

列:key | content

内容: abc | hello world

先使用ruby的特性实现一个Setting表:

class Setting < ActiveRecord::Base

  def self.method_missing(method_name, *args)
    return super if self.respond_to? method_name

    method_name = method_name.to_s

    update = false
    if method_name.include? "="
      update = true
      method_name = method_name.split("=").first
    end

    key = "#{prefix}#{method_name}"

    set = Setting.find_by_key key

    if set
      if update
        set.update_attribute :content, args.first
      else
        return set.content
      end
    end

  end

  def self.prefix
    ""
  end

end

这样就实现了例如

Setting.abc

这样的语法。

直接读取数据库中的key字段为 abc的内容“helloworld”。

也可以这样

Setting.abc="thank you"

直接设置key列下字段为 abc的content为 “thank you”

是不是好方便呀。 ruby就是这么强大~~

现在基于Setting这个类,继承,实现一个公告类。

class Notice < Setting
  def self.prefix
    "NOTICE_"
  end
end

于是,我们写读取数据时,会自动在key字段前加一个 NOTICE_ ,用于区分不同的类型的设置。

例如

Notice.abc

生成的sql语句为

SELECT  `settings`.* FROM `settings` WHERE `settings`.`key` = 'NOTICE_abc' LIMIT 1

完毕。


© 著作权归作者所有

共有 人打赏支持
moli

moli

粉丝 112
博文 13
码字总数 2969
作品 1
深圳
程序员
Rails 5.0.7 与 5.1.6 发布,开源网络应用框架

Rails 5.0.7 和 5.1.6 发布。Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和...

雨田桑 ⋅ 03/31 ⋅ 0

漏洞预警:GitLab 权限泄露漏洞

漏洞概述 GitLab 是一个使用 Ruby on Rails 开发的开源应用程序,实现了一个 Git 仓库管理平台,可通过 Web 界面进行访问公开的或者私有的项目。在企业中得到的广泛的使用。近日研究者发现在...

局长 ⋅ 2017/03/21 ⋅ 3

Fedora Linux 20 Alpha 发布

即将到来的在 Fedora 项目成立 10 周年前夕,Fedora 20 发布了 Alpha 版本。 Fedora 20 带来了大量新功能,其中在本次 Alpha 版本中可以见到的有: 将 ARM 作为主要支持架构,意味着绝大多数...

oschina ⋅ 2013/09/25 ⋅ 14

[项目总结]使用 Redis PUSH-POP 机制实现消息队列

更多文章请访问独立博客 https://huangwenwei.com 背景 越来越多的传统行业为提高管理效率、优化工作流程和团队组织结构,创业公司 ToB 创业项目引入了 SASS 的概念,用软件来规范和以其传统...

hww_面条酱 ⋅ 2017/09/29 ⋅ 0

Nutz的快速开发版本--Nutz on Rails

#Nutz# 为了提高开发效率做了很大的努力也非常成功。Nutz on Rails 只是站在巨人的肩膀上做点小小的工作。 Nutz on Rails 规定了项目的一些开发规范,添加了COC特性(主要是为Nutz添加了一些默...

tiantian_orz ⋅ 2012/04/09 ⋅ 4

2015 年 Ruby 大盘点

2015 年 Ruby 圈发生了很多有趣的事,让我们跟随 Glenn Goodrich 来回顾一下 15 年 Ruby 的年度标志性事件。 2015 将要结束,这一年对于 Ruby 来说非常重要。如果回顾一下本年度的标志性事件...

OneAPM蓝海讯通 ⋅ 2016/01/21 ⋅ 0

Rails 的 NetBeans 插件通过 7.0 版本验证

根据NetBeans的Ruby相关大标题公告,我到Ruby/ Rails NetBeans插件页面,看到它已经是7.0的验证了。这意味着我可以按“Reload catalog(重新载入目录)“,然后我可以安装插件。因为NetBeans预...

小卒过河 ⋅ 2011/05/03 ⋅ 1

Web应用系统开发课程(Jsp程序设计)资源列表

Web应用系统开发课程教学资源一览表 说明:本课程每周8节(2次课),共计72学时完成网上商城开发 jsp第一次课内容:搭建开发环境、环境测试、项目需求分析 http://dyzyxy.blog.51cto.com/944...

dyzyxy ⋅ 2015/04/16 ⋅ 0

[转]使用 InstantRails 搭建 Rails 开发环境

1、首先,下载InstantRails 在这里下载InstantRails最新版本2.0 ,我自己用的还是朋友发过来的1.7。 2、在本地任意文件夹解压(不用安装,很绿色) 运行InstantRails.exe,apache和mysql会启...

绿悠悠 ⋅ 2010/10/12 ⋅ 2

某个 Rails 5 项目走过的路 (续)

第一篇地址在这:https://ruby-china.org/topics/34061 我们接着记录开发应用中遇到的一些小问题。 在 sql 中拼接字符串形式的时间需要注意时区问题 我们经常会使用这样的查询: 如果你的应用...

pinewong ⋅ 2017/11/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 18分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 19分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 20分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 23分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 34分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 37分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 39分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 39分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 52分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 52分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部