1

我在注册向导期间通过帐户记录保存了无效的用户记录。我有一些方法可以让我有条件地跳过验证某些用户属性。当我通过关联检查数据的有效性时,它显示为有效,当我自己检查有效性时,它显示为无效。

前任:

$ account = Account.new
$ account.users.new(:email => nil)
$ account.save
=> true
$ account.users.last.valid?
=> true
$ User.last == account.users.last
=> true
$ User.last.valid?
=> false

有任何想法吗?

4

1 回答 1

1

他们不做同样的事情,因为一个使用内存,另一个使用数据库。

account.users.last.valid?

从帐户对象中,获取用户关联(在内存中),获取最后一个元素,检查是否有效。

User.last == account.users.last

比较数据库中最后一个用户和 account.users 关联(内存中)中最后一个用户的主键(:id 字段),如果主键相同,则返回 true。

User.last.valid?

检查数据库中的最后一个用户是否有效。

尝试以下操作:

account.users(true).last.valid?

The true argument reloads the users association from the database.

于 2012-04-30T19:39:34.353 回答