2016-08-07 82 views
1

我创建有一项模型设计隐藏字段

迁移:

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 cUser型那里我获得了丰厚的列

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_at, updated_at

当我做u.to_json我得到{"id":1,"provider":"email","uid":"[email protected]","name":"Name","surname":"Surname","email":"[email protected]","created_at":"2016-08-07T18:27:24.186Z","updated_at":"2016-08-07T18:34:48.647Z"}

它忽略领域,如confirmed_atconfirmation_sent_at等等

所以,我想在我的模型添加一些“隐藏”的列。我该怎么做?

谢谢!

回答

0

数据库中有不同的字段吗? (condirmed_atconfirmation_send_at等)

类似的东西:

t.string :confirmation_token 
t.datetime :confirmed_at 
t.datetime :confirmation_sent_at 

和其他人?

检查您的模式文件(db/schema.rb)

+0

我在我的数据库中有这些字段。我可以使用'User.find(1).confirmation_token'来访问它们。但是当我做'User.find(1).to_json'时,它会忽略这些字段。顺便说一句,我正在使用rails 5.0 –

+0

我认为,这是设计和rails 5之间的一个bug ... –

+0

这不是一个bug,这是rails 5中的一些特性,我猜他们保存了类似'serializator'的东西忽略这些字段。我很想知道他们是如何做到的:) –