文档章节

rails的设置与公告开发

moli
 moli
发布于 2016/05/09 01:41
字数 280
阅读 58
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

"设置"存在数据库中,本质上是一个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 6.0.0 beta2 发布,开源 Web 应用框架

Rails 6.0.0 beta2 发布了。 作为 Rails 6 的第二个 beta 版本,新版在修复了一系列 Bug 的同时,新增了一些小特性。但该版本的更新亮点在于:切换到 Xavier 的新库 Zeitwerk 来处理自动加载...

段段段落
02/27
994
5
Rails 5.2.3 RC1 发布,Ruby Web 应用开发框架

Rails(Ruby on Rails) 5.2.3 RC1 发布了,如果此版本中没有发现什么回退,那么 5.2.3 正式版本将于本月 27 日发布。 Rails 是一个基于 MVC 模型的 Web 应用开发框架。 以下列表分别对应此版...

h4cd
03/23
434
0
Rails 5.0.7 与 5.1.6 发布,开源网络应用框架

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

h4cd
2018/03/31
560
2
RubyMine 2019.3 发布,流行的 Ruby 开发工具

RubyMine 2019.3 发布了,更新亮点如下: RuboCop 为 RuboCop 和 IDE 检查严重性配置映射 Rails 使用 Run Anything 运行 Rails 生成器和 Rake 任务 Code Style 通过初始接收者或前导点对齐方...

xplanet
11/30
975
0
RubyMine 2019.2 发布,流行的 Ruby 开发工具

RubyMine 2019.2 发布了,更新亮点如下: Debugger 调试器速度更快了 使用 Smart Step Into 调查线路上的每个方法或块 在块处设置断点 Ruby 2.7 支持模式匹配 支持有编号的块参数 Rails 6 支...

xplanet
07/31
1K
6

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
26分钟前
3
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
35分钟前
3
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
42分钟前
4
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部