Ruby on rails 设计隐藏的领域
我创造了一个设计模型 迁移是:Ruby on rails 设计隐藏的领域,ruby-on-rails,devise,Ruby On Rails,Devise,我创造了一个设计模型 迁移是: t.string :provider, null: false, default: "email" t.string :uid, null: false, default: "" ## Database authenticatable t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime
t.string :provider, null: false, default: "email"
t.string :uid, null: false, default: ""
## Database authenticatable
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
# etc...
当我在那里输入rails c
并键入User
时,我会得到一个巨大的列列表
User(id: integer, provider: string, uid: string, encrypted_password:
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,
confirmation_token: string, confirmed_at: datetime,
confirmation_sent_at: datetime, unconfirmed_email: string...
但是当我键入u=User.find(1)
时。它只有一些列id、provider、uid、created\u at、updated\u at
当我执行u.to_json
时,我得到{“id”:1,“提供者”:“email”,“uid”:mymail@mail.com,“姓名”:“姓名”,“姓氏”:“姓氏”,“电子邮件”:mymail@mail.com,“创建时间”:“2016-08-07T18:27:24.186Z”,“更新时间”:“2016-08-07T18:34:48.647Z”}
它会忽略诸如在处确认、在处发送确认等字段
因此,我想在我的模型中添加更多的“隐藏”列。我该怎么做
谢谢 您的数据库中有不同的字段吗?(
在
处进行确认,在
处发送确认等)
诸如此类:
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
还有其他的呢
检查您的模式文件(db/schema.rb)designe有
黑名单用于序列化
常量。签入来源:
您可以在designe配置的config/initializers/designe.rb
中隐藏列,使其不被序列化,行如下:
designe::Models::authenticable::BLACKLIST_FOR_SERIALIZATION.concat[:column_1,:column 2]
我的数据库中有这些字段。我可以使用User.find(1).confirmation\u token
访问它们。但是当我执行User.find(1).to_json
时,它会忽略这些字段。顺便说一句,我使用的是rails 5.0这不是一个bug,这是rails 5中的一些功能,我想它们保存了类似于serializator
的内容,它忽略了这些字段。我很想知道他们是怎么做到的:)啊!好发现。当我安装Desive时,这是使我困惑的第一件事。