rails将类常量重构到数据库对应的表之后记

怎么还有啊!别急,有强迫症的人伤不起!有点小事没说完感觉痒痒的:就是如果表payment_types经常变动该怎么办?每次都要关闭rails网页服务器,然后重启吗?那也太麻烦鸟,最终的解决方案是,在Order的验证中强制每次都从数据库的表中拉取支付类型数据比较,最后修改完的Order.rb代码如下:

class Order < ActiveRecord::Base
  has_many :line_items,dependent: :destroy

  validates_each :pay_type do |model,attr,val|
    unless PaymentType.types.include?(val)
      model.errors.add(attr,'Payment type not on the list')
    end
  end
end

一番折腾后,笨猫貌似又领悟了些许:首先要找到问题的背后真正的原因是啥,否则就是瞎闹;其次在不确定时步伐要小,步子要缓,不要指望一次成功,否则后果很惨痛,你懂得...

时间: 2024-10-03 05:58:09

rails将类常量重构到数据库对应的表之后记的相关文章

rails将类常量重构到数据库对应的表中

问题是这样:原来代码.html.erb页面中有一个select元素,其每个item对应的是model中的类常量: <%= f.select :pay_type,Order::PAYMENT_TYPES,prompt:'Select a payment method' %> 类中的常量定义如下: class Order < ActiveRecord::Base PAYMENT_TYPES = ["Check","Credit card","

rails将类常量重构到数据库对应的表中之三

经过博文之一和之二的重构,貌似代码表现的还不错,正常运行和test都通过鸟,但是,感觉告诉我们还是有什么地方不对劲啊!究竟是哪里不对劲呢?我们再来好好看一下. 我们把数据库表中的支付方式集合直接放在实现的地方,貌似很唐突.无论是Order model中,Order控制器中还是new.html.erb中都是如此: #in Order.rb validates :pay_type,inclusion:PaymentType.all.map {|type|type.pay_type} validate

MySQL数据库名、表名大小写问题

在MySQL中,数据库对应操作系统数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎).因此,所使用操作系统的大小写敏感性决定了数据库名以及表名的大小写敏感性.这说明在大多数Unix中数据库名和表名对大小写敏感,而在windows中对大小写不敏感. 列.索引.存储子程序和触发器名在任何平台对大小写不敏感,列的别名也不敏感. 对于类Unix系统: 数据库名和表名是严格区分大小写的 表的别名是严格区分大小写的 列名与列别名在所有情况下均是忽略大小写的 变量

Php面向对象 – 类常量

类常量:类中,保存运行周期内,不变的数据. 定义: const关键字 const 常量名 = 常量值 例子: class Student { public  $stu_id; public  $stu_name; public  $stu_gender; const  GENDER_MALE = '男'; const  GENDER_FEMALE = '女'; } 类常量不受访问限定修饰符的限制 访问: 类::常量名 例子: class Student { public  $stu_id; pu

java中的String类常量池详解

test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; String b = "a"+ 1; System.out.println(a==b); }//true } test2: package StringTest; public class test2 { /** *

php类和对象: 类常量

类常量 定义在类中的常量称为类常量.类常量与类本身及特定实例无关,可以在类外部任何位置引用.PHP中使用关键字 const 来修饰类常量.类常量通常要大写,如果类常量由多个单词组成,建议使用下划线分隔.语法格式如下: 类名称::类常量名称 类常量的用法与类静态属性和静态方法很相似,同样,如果想在同一类的成员方法中访问类常量,可以通过在该类常量的名称前加上操作符”self::”来实现.

对【面向对象的类访问和对象访问的区别【this以及类访问】、静态成员的访问区别、类常量等、继承和重写、访问修饰限定符、冒泡排序】的总结

面向对象的总结1.首先面向对象的编程使用的都是使用对象作为处理对象而言[例如继承等情形,继承的本质来说,依旧针对的是对象]但是只有针对类的访问.静态成员以及访问修饰限定符时,针对的是类的概念 2.类内定义时,只有五种情形:类常量[const关键字定义并且使用类来调用]属性[这些属性和方法是针对该类实例的对象来调用]方法[在这种情形下使用$this进行指代作用环境(调用该方法的对象),只有继承中,子类实例的对象会向下传递到静态调用里]静态属性[用来作为实例该类的所有对象之间共享的数据.保存在类中]

面向对象设计:共性VS个性-------继承的粒度和聚合的粒度以及类的重构

共性和个性 根据面向对象的原理,类是对象的抽象,也就是说,类是一系列的既有共性又有个性的对象的高度概括,类的属性和方法代表了隶属于该类的所有对象的共性,类的每个对象实例都可以有不同的属性值,这反映了每个对象的个性 继承的粒度 对于一颗继承树,应该把继承的层次细化到什么程度才算合适呢? 首先,必须基于需求来确定集成的力度,如果提取对象的某一个共性对于我们要解决的问题没有任何帮助,或者只有很小的帮助,就没必要提取该共性而增加继承的复杂程度了 其次,对象的某些共性更适合用于属性而不是用新的基类和派生类

选课系统的界面设计、类图设计、数据库设计

一.界面设计 不论学生.老师登陆界面统一是下图,根据输入的用户名来判断该进入哪种界面. 学生登陆后的界面: 教师界面:教师登陆后到课程名称界面,选择课程后得到第二张图. 二.类图设计 三.数据库设计 课程:课程编号,开课系别,教师编号,时间,教师,容量,先决条件 教师:教师编号,教师姓名,教师性别,所属学院 学生:学生编号,开课学院,学生专业 教授课程:课程编号,教师编号 上课信息:学生编号,课程编号,上课时间,教室