ruby-on-rails - 单表继承(STI)场景中的类型转换基类模型

标签 ruby-on-rails ruby

class User < ActiveRecord::Base   
end  

class Consumer < User 
end  

class Merchant < User 
end   

u = User.find(id)  

如何将变量 u 类型转换为 Consumer 类型?

最佳答案

我找到了这个问题的答案。 ActiveRecord::Base 类有一个用于此目的的方法:

http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002334

代码将是

u = User.find(id)
u = u.becomes(u.type.constantize)

关于ruby-on-rails - 单表继承(STI)场景中的类型转换基类模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821699/

相关文章:

ruby-on-rails - 将用户模型中的整数递增/递减 1

ruby-on-rails - 多个 model.save's in 1 if condition with an unless

ruby-on-rails - 检查字段的值是否在 before_update 过滤器中更改

ruby-on-rails - Rails 4 中连接表的默认范围

ruby-on-rails - 没有 Rails 的事件记录 : How to pass an Arbitrary hash to Active Record

ruby - 为什么 Ruby 的标准库有 DateTime 类?

ruby-on-rails - 如何使用 SecureRandom.urlsafe_base64?

ruby-on-rails - 设计未定义的方法 `first_name'

ruby-on-rails - Spork/Autotest 不自动获取更改

ruby-on-rails - Rails simple_form 元素与数据-...刺激属性?