ActiveRecord链接实体未保存?

时间:2015-07-10 16:33:24

标签: ruby-on-rails activerecord

我有一个有公司的用户,如下

SELECT * FROM dbo.CSVToTable(@UserPreferences)

在我的seeds.rb中,我正在设置它们

class User < ActiveRecord::Base
  has_one  :company
end

class Company < ActiveRecord::Base
  belongs_to :user
end

稍后,在服务上,我正在做

cc = Company.find_by_name("SocialSky, Inc.") || Company.create(
  name: "Whatever Inc.",
  main_email: "person@example.com"
)

client = User.find_by_email('johndoe@gmail.com') || User.create( 
  email: 'johndoe@gmail.com',
  company: cc
)

它返回零

为什么?我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您使用的是rails 3,则必须将company_id添加到attr_accessible。

"InvalidParam"

然后在种子文件中,您应首先验证公司是否已创建。

class User < ActiveRecord::Base
   has_one  :company
   attr_accessible : email
end

以后

 cc = Company.find_by_name("SocialSky, Inc.") || Company.create(
   name: "Whatever Inc.",
   main_email: "person@example.com")

 p cc

答案 1 :(得分:0)

您是否尝试过使用first_or_create

cc = Company.where(name: "SocialSky, Inc.").first_or_create |company|
  company.name =  "Whatever Inc."
  compnay.main_email =  "person@example.com"
)

client = User.where(email: 'johndoe@gmail.com').first_or_create |user|
  user.email: 'johndoe@gmail.com'
  user.company: cc
)

http://apidock.com/rails/ActiveRecord/Relation/first_or_create

相关问题