model不会创建因为无法在Rails中找到ID

时间:2011-03-09 05:46:41

标签: ruby-on-rails model

我有两个模特。

class User 
  has_one  :spec, :dependent => :destroy

    # returns true for a duplicat record
       def duplicate?
         user = User.find_by_email(email)
         self.id = user.id unless user.nil?  
         not user.nil?
       end


  class Spec
  belongs_to :user

  validate_uniqueness_of :user_id

Controller

if @user.duplicate? || @user.save

 @user.create_spec(:birthdate => params[:user][:deliver_on])

end

这会产生以下错误:

ActiveRecord::StatementInvalid in BoardController#new

Mysql::Error: Column 'user_id' cannot be null: INSERT INTO `specs` (`created_at`, `birthdate`, `updated_at`, `avatar`, `gender`, `user_id`, `last_name`, `first_name`, `picture`) VALUES('2011-03-09 05:43:46', NULL, '2011-03-09 05:43:46', '../images/default_avatar.jpg', NULL, NULL, '', '', NULL)

但是,如果我这样做:

@user.create_spec(:user_id => @user, :birthdate => params[:user][:deliver_on])

它有效!

我认为@ user.create_spec会自动提供user_id。

无论如何要让这项工作按照预期的方式进行? 我感谢任何反馈。 感谢

1 个答案:

答案 0 :(得分:1)

我认为你的做法是错误的。 据你说,

class User 
  has_one :spec
end

但是您要为重复用户创建另一个规范。 所以我建议关注链接。

http://www.hackerdude.com/2005/11/28/one-to-one-relationships-with-rails/