aru*_*run 14 types ruby-on-rails single-table-inheritance sti
由于公司规则,我不能使用我们的域名类; 我打算用一个类比来代替.我有一个名为projects的表,其中有一个名为'type'的列,可能的值为'indoor'和'outdoor'.室内和室外的记录具有明显的功能分离,并且作为STI实现非常巧妙地适合.不幸的是,我无法更改类型名称,也无法在全局命名空间中添加类.有没有办法为'type'指定不同的值?
注意:我不是要为STI使用不同的列名而不是'type'.我希望除了我的类名之外,还有不同的类型值.
小智 18
你可以尝试这样的事情:
class Proyect < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
然后是室内课,但有其他名字
class Other < Proyect
class << self
def find_sti_class(type_name)
type_name = self.name
super
end
def sti_name
"Indoor"
end
end
end
Run Code Online (Sandbox Code Playgroud)
同样适用于户外课程.您可以在http://apidock.com/rails/ActiveRecord/Base/find_sti_class/class中查看sti_name
| 归档时间: |
|
| 查看次数: |
7599 次 |
| 最近记录: |