首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Rails中获取STI类基类的路由

在Rails中,单表继承(STI)是一种将多个相关模型存储在同一个表中的方法。要获取STI类的基类路由,可以使用Rails的内置方法base_class

首先,确保您的模型已经设置了单表继承。例如,假设您有一个名为Vehicle的基类,以及一个名为Car的子类。您的模型可能如下所示:

代码语言:ruby
复制
class Vehicle< ApplicationRecord
  self.inheritance_column = :_type_disabled
end

class Car < Vehicle
end

要获取Car类的基类路由,可以使用base_class方法:

代码语言:ruby
复制
Car.base_class

这将返回Vehicle类。

在这种情况下,获取STI类基类的路由可以通过以下方式实现:

代码语言:ruby
复制
class Vehicle< ApplicationRecord
  self.inheritance_column = :_type_disabled
end

class Car < Vehicle
  def self.base_class_route
    base_class.to_s.underscore.pluralize
  end
end

现在,您可以调用Car.base_class_route来获取基类的路由,即vehicles

请注意,这个答案并没有涉及到云计算相关的知识,因为在Rails中获取STI类基类的路由是一个通用的编程问题,与云计算无关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python协议 、鸭子类型 、 抽象 、混入

本篇文章探讨一下python几个概念:协议 、鸭子类型 、 抽象 、混入。 一、协议 python,协议是一个或一组方法。...三、抽象 抽象就是定义各种方法而不做具体实现,任何继承自抽象必须实现这些方法,否则无法实例化。 那么抽象这样实现目的是什么呢? 假设我们写一个关于动物代码。...Dog和Bird实例化之后调用相同方法,但是却有不同输出,这就是最简单抽象用法。...混入应该提供某方面的特定行为,只实现少量关系非常紧密方法并且混入绝对不能实例化。 Python 没有把声明为混入正规方式,所以强烈推荐名称中加入 ...Mixin 后缀。...Django在这方面做很好,举一个例子, ListView主要用于从数据库获取多条记录,它继承关系如下: ? 整个体系非常清晰,各个职责也非常明确,且职责从命名就可以读出。

1.8K20

、扩展──页面重构模块化设计(五)

、扩展──页面重构模块化设计(五) 由 Ghostzhang 发表于 2010-06-11 19:24 和 扩展 是这个系列主要内容,上一篇《 模块化核心思想──页面重构模块化设计...也就是说,当出现多个类似的模块时,包含了这些模块大部分效果(或者理解为公共部分),基础上,我们可以通过添加很少代码——扩展,来达到所需要要效果。...的确不是所有的模块都值得这样去做,于是我们可以得到一种“偷懒”作法,把其中一个模块直接变成。对于经常会被使用模块,像图片列表、播放列表等,这种写法代码复用和效率会有一定提高。...当然前提是这两个模块有能找到类似的点,能够形成。 在这两个模块,我们不难看出,A模块和B模块信息部分是很类似的,虽然B模块列表不需要A模块评论部分,但这并不影响B模块表现。...另外还有一个重要点,之所以选择A模块为,是因为A栏目中被更多页面使用。

70550

Python接口协议和抽象

猴子补丁 我们可以通过猴子补丁来进一步认识,Python协议约定是怎么回事。猴子补丁是这样一种技术:在运行时修改或模块,而不改动源码。...抽象 Python抽象是指必须让继承它子类去实现它所要求方法。...Pythoncollections.abc模块中就定义了很多抽象: 虽然我们实际编程并不会自己编写抽象(一般也不建议这样做,因为可能会导致意想不到问题),但是了解抽象,可以帮助我们更好理解...抛开枯燥理论知识,我书中找到了一处具有实践价值片段: 「一连串if/elif/elif中使用isinstance做检查,然后根据对象类型执行不同操作,通常是不好做法;此时应该使用多态,即采用一定方式定义...白鹅类型是指只要cls是抽象(即cls是abc.ABCMeta),就可以使用isinstance(obj, cls)。它基本特性是,即便不继承,也有办法把一个注册为抽象虚拟子类。

1.7K30

派生虚函数和非虚函数继承效果

“强制实现”,也就是只要是父指针调用普通函数,那就是父普通函数 而虚函数作用,主要是为了让父指针可以调用子类函数,这种是在运行时才决定调用哪个函数 1、虚函数:   C++虚函数主要作用是...子类可以重写父虚函数实现子类特殊化。 2、纯虚函数:   C++包含纯虚函数,被称为是“抽象”。抽象不能使用new出对象,只有实现了这个纯虚函数子类才能new出对象。   ...C++纯虚函数更像是“只提供申明,没有实现”,是对子类约束,是“接口继承”。   C++纯虚函数也是一种“运行时多态”。...3、普通函数:   普通函数是静态编译,没有运行时多态,只会根据指针或引用“字面值”对象,调用自己普通函数。   普通函数是父为子类提供“强制实现”。   ...因此,继承关系,子类不应该重写父普通函数,因为函数调用至于对象字面值有关。 参考链接

7010

SpringBoot 之 普通获取Spring容器bean

容器,交给spring容器进行管理,但是实际当中,我们往往会碰到一个普通Java,想直接使用spring提供其他对象或者说有一些不需要交给spring管理,但是需要用到spring里一些对象...但是往往我们所做都是Web Application,这时我们启动spring容器是通过web.xml文件配置,这样就不适合使用上面的方式普通获取对象了,因为这样做就相当于加载了两次spring...容器,而我们想是否可以通过启动web服务器时候,就把Application放在某一个,我们通过这个获取,这样就可以普通获取spring bean对象了,让我们接着往下看 普通调用Spring... bean对象: 可以参考:http://412887952-qq-com.iteye.com/blog/1479445 这里有更多这方面的介绍,比较详细 下面介绍springboot是如何使用...然后我们编写测试controller,并从刚才写springutil获取这个bean ?

3.3K10

工具如何获取到 Spring 容器 Bean?

当然这只是一个理论,实际开发,我们往往要用到 Spring 容器为我们提供诸多资源,例如想要获取到容器配置、获取到容器 Bean 等等。... @Import 作为元注解使用时,通过 @Import 导入配置如果实现了 ImportAware 接口就可以获取到导入该配置接口数据配置。...接下来我们就可以一个非 Spring 管理 Bean ,随时随地查询 Bean 了,像下面这样: UserService userService = BeanUtils.getBean("userService...Spring 容器所管理 Bean 获取到 Spring 容器 Bean 了。... TienChin 项目视频,我也会和大家详细聊一聊这块,视频戳这里:TienChin 项目配套视频来啦。 just this。

1.1K10

Java反射(通过反射获取结构、invoke方法、获取注解)

获取运行时完整结构 可以获取:包、修饰符、类型名、父(包括泛型父)、父接口(包括泛型父接口)、成员(属性、构造器、方法)、注解(、方法上、属性上)。...,并不会经常开发,框架设计才会被频繁使用。...调用运行时指定结构 3.1 调用指定属性 反射机制,可以直接通过Field操作属性,通过Field提供set()和get()方法就可以完成设置和取得属性内容操作。...> clazz = Class.forName("com.example.reflect.Student"); //2、获取方法对象 /* * 一个...Annotation 成员 Annotation 定义以无参数有返回值抽象方法形式来声明,我们又称为配置参数。

3.7K91

【Android 组件化】路由组件 ( 生成 Root 记录模块路由表 )

文章目录 一、Root 表作用 二、生成 Root 表 三、完整注解处理器代码 及 生成 Java 代码 ( 仅供参考 ) 1、注解处理器代码 2、app 模块注解生成 Java 源码 3、...Router_Group_app.java ; 一个模块路由表可能有多个 , 需要为若干路由表再生成一个 Root 表, 用于作为路由导航 ; 生成 Root 表样式 : 其中 “app”...分组表 对应 Java */ private void generateGroupTable() { // 获取要生成 需要实现接口节点...// 正式设置路由地址分组 routeBean.setRouteGroup(group); } } } 2、app 模块注解生成 Java 源码...Module 模块 , 使用注解生成源码 , 都在对应模块 " build\generated\ap_generated_sources\debug\out\ " 目录 ; app 注解

2.5K10

浅谈数字IC验证面向对象编程(抽象和继承)

随着代码重用性和验证IP硬件验证变得越来越普遍,也越来越适用OOP概念。 ? 如何设计大型程序呢?OOP建议使用“divide and conquer(分而治之)”。...面向对象编程使我们可以软件设计上做同样事情。可以定义一个通用,并使用继承创建该抽象特定实例。...例如有一个汽车定义了所有汽车对象可以包含东西,然后该类基础上定义具有某种特殊属性(品牌、颜色和引擎等)特殊汽车,例如银色保时捷跑车。 使用继承可以允许具有足够相似接口对象共享代码。...父仅用于实现重用和抽象,声明为virtual class,永远不要实例化父。 对象保存运行时数据并用作构建程序,程序实例化对象并触发对象之间互动。...模块实例是Verilog进行elaboration时创建并且存在于整个仿真过程,对象可以根据要求在运行时创建。功能验证,测试平台构建过程是动态,这使其更加灵活。 endclass: car

96010

Java Tomcat 是如何加载

一、加载 JVM并不是一次性把所有的文件都加载到,而是一步一步,按照需要来加载。 比如JVM启动时,会通过不同加载器加载不同。...当用户自己代码,需要某些额外时,再通过加载机制加载到JVM,并且存放一段时间,便于频繁使用。 因此使用哪种类加载器、什么位置加载都是JVM重要知识。...因此,按照这个过程可以想到,如果同样CLASSPATH指定目录中和自己工作目录存放相同class,会优先加载CLASSPATH目录文件。...三、Tomcat加载 Tomcat加载稍有不同,如下图: ?...通过这样,我们就可以简单把Java文件放置src文件夹,通过对该Java文件修改以及调试,便于学习拥有源码Java文件、却没有打包成xxx-sourcejar包。

2.4K20

简易理解设计模式之:模板方法模式——AndroidBaseActivity

图: AbstractClass(抽象模板):定义了一套算法框架。 ConcreteClass(具体实现):实现模板方法步骤未执行方法。...• 重构时,模板方法模式是一个经常使用模式,把相同代码抽到父,然后通过子类约束其行为。...例子: App开发,不管是iOS还是Android,我们每一个界面控制器都会有着很多相同方法,例如:初始化界面、初始化数据、设置相同主题等等操作。...可能很多朋友已经无意之中用到了这种模式,下面就让我们Andoird上试一下: 需求:实现界面控制器 1、继承实现 1.1、新建一个BaseActivity public abstract...每个控制器都有不同界面布局文件,initView方法绑定一下,看起来也没错和挺方便。 在这里,其实只是实现了初步继承,每一个子类都还需要实现一遍setContentView()方法。

60220

__init__设置对象

1、问题背景Python,可以为对象设置一个父,从而实现继承。但是,如果想要在实例化对象时动态地指定父,则会出现问题。...,对象只能在定义时指定,不能在实例化对象时动态设置。...第一个解决方案是使用工厂。工厂是一个函数,它可以动态地创建工厂,可以根据传入参数来决定创建哪个。...如果parent是Blue,则创建两个,Circle和Square,它们都是Blue。最后,它返回创建。这样,我们就可以实例化对象时动态地指定对象了。第二个解决方案是使用依赖注入。...依赖注入是一种设计模式,它可以将对象依赖关系从对象本身解耦出来。这样,就可以实例化对象时动态地注入它依赖关系。

7810

DWR实现直接获取一个JAVA返回值

DWR实现直接获取一个JAVA返回值     DWR是Ajax一个开源框架,可以很方便是实现调用远程Java。但是,DWR只能采用回调函数方法,回调函数获取返回值,然后进行处理。...那么,到底有没有办法直接获取一个方法放回值呢?...我们假设在DWR配置了TestDWR中所对应未JTest,那么我们要调用getString方法,可以这样写: function Test() {     //调用JavaTestgetString...,然后回调函数处理,上面那段话执行后会显示test,也就是java方法返回值。...先来说说Ajax运行原理吧,其实它原理很简单,就是调用远端地址,获取页面返回数据,然后进行分析处理。

3.2K20

技术 | Java获取3种方法!

前言 用了这么久Java,怎样Java获取名呢?今天小编为您带来了Java获取3方法,了解一下? 1 获取方法 Java 获取方式主要有以下三种。...getName() 返回是虚拟机里面的class名表现形式。 getCanonicalName() 返回是更容易理解名表示。...getSimpleName() 返回简称。 2 都有什么区别? 通过一个实例来看下它们主要区别。...3 结论 从以上结果可以看出 getName() 和 getCanonicalName() 获取普通时候没有区别,获取内部类和数组有区别的。...getSimpleName() 获取普通和内部类名时候没区别,获取数组时候有区别。 文章来源:Java技术栈 文章编辑:小柳

1.3K20
领券