我有这段代码......
recipient = User.find_or_create_by_email(params[:recipient_email],
{ :password => 'password',
:password_confirmation => 'password',
:first_name => 'First',
:last_name => 'Last',
:active => false })
哪个不起作用。收件人未按原样保存在数据库中。不过这......
recipient = User.find_or_create_by_email(params[:recipient_email],
{ :password => 'password',
:password_confirmation => 'password',
:first_name => 'First',
:last_name => 'Last'})
确实可以创建收件人并将其保存在数据库中,但是:active标志现在设置为默认值true。
在用户模型中,我有......
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :active
和
validates :active, :presence => true
关于这里发生了什么的任何想法?
答案 0 :(得分:1)
您的:active
是真还是假(或者除非您在迁移文件中定义了默认值,否则为nil)。也许虚假被解释为不存在,我真的不知道。但这就是我要这样做的方式:
将t.boolean :active, :default => false
放入您的文件中(或者如果您需要创建迁移,请执行change_column :table, :active, :boolean, :default => false
),然后删除您的验证。
除非您提供具有不同值的参数,否则现在每个用户都保存为false。如果你的大多数用户都应该是真的(所以整个事情,反之亦然),然后改变它。这使您的验证变得不必要。
希望我明白你的问题......否则,不理我。