我有兩種模型。模型不會創建,因爲在Rails中找不到ID
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。
無論如何,使這項工作的方式應該是? 我很欣賞任何反饋。 感謝
接受一些你的答案,然後人們會幫助你。 – s84 2011-03-09 05:51:57