Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 雷克流产了!验证失败:用户可以';种子数据不能为空_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 雷克流产了!验证失败:用户可以';种子数据不能为空

Ruby on rails 雷克流产了!验证失败:用户可以';种子数据不能为空,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,为什么我这样做时用户没有被分配 u1 = User.create( :username => "user1", :password => "testing", :email => "user1@email.com", :time_zone => "Tokyo") u2 = User.create( :username => "user2", :password => "testing", :email => "user2@email.com", :t

为什么我这样做时用户没有被分配

u1 = User.create( :username => "user1", :password => "testing", :email =>  "user1@email.com", :time_zone => "Tokyo")
u2 = User.create( :username => "user2", :password => "testing", :email =>  "user2@email.com", :time_zone => "Eastern Time (US & Canada)")
u3 = User.create( :username => "user3", :password => "testing", :email =>  "user3@email.com", :time_zone => "Singapore") # User that adds Private stuff only.

o1 = Owner.create!( :name => "Owner A", :about => "", :user_id => User.find_by_username("user1"), :private => false, without_protection: true )
o2 = Owner.create!( :name => "Owner B", :about => "", :user_id => User.find_by_username("user2"), :private => false, without_protection: true )
o3 = Owner.create!( :name => "Private Owner", :about => "", :user_id => User.find_by_username("user3"), :private => true, without_protection: true )
我得到一个错误:

$ rake db:seed
rake aborted!
Validation failed: User can't be blank

Tasks: TOP => db:seed
(See full trace by running task with --trace)
我还可以通过什么方式分配用户id

更新

Owner.rb

class Owner < ActiveRecord::Base
  attr_accessible :name, :about, :private
  belongs_to :user
  has_many :locations
  validates_presence_of :name
  validates_presence_of :user_id
  validates_inclusion_of :private, :in => [true, false]
  validates_length_of :name, :in => 3...50, :allow_blank => true
end
更新2

这可以工作,但仅为我的所有所有者保存
user\u id=1

o1 = Owner.new( :name => "Owner A", :about => "", :private => false )
o1.user_id = u1
o1.save!

尽管您尚未包含模型的代码,但从验证错误来看,您似乎已经验证了
所有者
模型中是否存在
用户
。在您的
Owner.create中行,您正在传入
user\u id
。尝试将其更改为:

o1 = Owner.create!( :name => "Owner A", :about => "", :user => User.find_by_username("user1"), :private => false, without_protection: true )
或者,由于您刚刚创建了这些用户,您可以执行以下操作:

o1 = Owner.create!( :name => "Owner A", :about => "", :user => u1, :private => false, without_protection: true )

作为旁注,您可以通过两种方式传递关联,一种是传递其id(
:user\u id=>user.id
),另一种是传递实际实例(
:user=>@user
)。Rails验证非常挑剔,因此如果您在
user
上进行验证,它将查找
user
,如果您在
user\u id
上进行验证,它将查找
user\u id

,尽管您尚未包含模型的代码,从验证错误可以看出,您的
所有者
模型中是否存在
用户
。在您的
Owner.create中行,您正在传入
user\u id
。尝试将其更改为:

o1 = Owner.create!( :name => "Owner A", :about => "", :user => User.find_by_username("user1"), :private => false, without_protection: true )
或者,由于您刚刚创建了这些用户,您可以执行以下操作:

o1 = Owner.create!( :name => "Owner A", :about => "", :user => u1, :private => false, without_protection: true )

作为旁注,您可以通过两种方式传递关联,一种是传递其id(
:user\u id=>user.id
),另一种是传递实际实例(
:user=>@user
)。Rails验证非常挑剔,因此如果您在
user
上进行验证,它会查找
user
,如果您在
user\u id
上进行验证,它会查找
user\u id

啊,我明白了,我不知道关于验证的情况。我发布了我的
所有者
模型以及我迄今为止尝试的内容。请尝试将您的验证更改为
验证是否存在:user
。是:使用
所有者。新建而不是
Owner.create,并将用户从参数中删除。然后分配
o1.user=u1
,最后
o1.save。哦,对不起,不应该有
在新的结尾,我的错误。你的作业也应该是:
o1.user\u id=u1.id
o1.user=u1
,但不是
o1.user\u id=u1
。在匹配分配的对象类型时必须小心,否则会发生奇怪的事情(我认为ruby正在将任何实例的存在转换为整数1)。不客气!你只需要在调试过程中非常系统化,你就会发现问题所在。啊,我明白了,我不知道验证。我发布了我的
所有者
模型以及我迄今为止尝试的内容。请尝试将您的验证更改为
验证是否存在:user
。是:使用
所有者。新建而不是
Owner.create,并将用户从参数中删除。然后分配
o1.user=u1
,最后
o1.save。哦,对不起,不应该有
在新的结尾,我的错误。你的作业也应该是:
o1.user\u id=u1.id
o1.user=u1
,但不是
o1.user\u id=u1
。在匹配分配的对象类型时必须小心,否则会发生奇怪的事情(我认为ruby正在将任何实例的存在转换为整数1)。不客气!您只需在调试过程中非常系统化,就会发现问题所在。