【问题标题】:rails active records returning wrong class typerails 活动记录返回错误的类类型
【发布时间】:2021-08-15 04:49:22
【问题描述】:

我使用以下命令在 rails 中创建了一个新模型:

rails g model prod_domain name:string type:string user_logon_name:string description:string email:string address:string company:string department:string dn:string sa_description:string is_sa:string sa_remap_description:string 所有权:string comment:text

rake db:迁移

我在模型中添加了一些功能,如下所示:

class ProdDomain < ActiveRecord::Base

  def self.search_by_id(keyword)
    users = Array.new
      ProdDomain.where(id: keyword).find_each do |user|
      users.push(user)
    end
    return users
  end
  def self.search(keyword)
    users = []
    ProdDomain.where(dn: keyword).find_each do |user|
      users.push(user)
    end
    users
  end

end

但是,当我尝试在此模型中查找记录时,我一直得到 'USER' 类而不是 'ProdDomain' 类,我做错了什么:

(byebug) ProdDomain.find(1).class

ProdDomain 负载 (0.4ms) SELECT prod_domains.* FROM prod_domains WHERE prod_domains.id = 1 LIMIT 1

User(id: integer, email: string, encrypted_pa​​ssword: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at : datetime, updated_at: datetime, username: string, role: integer, dn: string, department: string, name: string)

【问题讨论】:

  • 能否包含整个 ProdDomain 模型和“rails g”生成的迁移?

标签: ruby-on-rails activerecord


【解决方案1】:

您似乎定义了一个type 列。在 Rails 中,type 列默认用于指示inheritance。 如果您不打算使用继承,则可以重命名列(kind 之类的名称很常见),或者您可以覆盖 Rails 将使用的列名 Base.inheritance_column

【讨论】:

  • 谢谢,这正是问题所在,它把我逼疯了,我在类型字段中有“用户”,现在有意义
猜你喜欢
  • 2011-04-29
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
相关资源
最近更新 更多