2011-02-23 93 views
0

下面是我的两个模型User和Patient的简化视图。Ruby on rails accepted_nested_attributes_for简单问题

用户has_one患者和患者属于某个用户。

我试图在轨控制台做的是:

p = Patient.new(:user_id => 2, :user_attributes => [{:username => 'patient'},{:password => 'password'}]) 

我得到的错误: NoMethodError:未定义的方法`with_indifferent_access'为[{:用户名=> “病人”},{:密码=>“密码”}]:阵列

我在做什么错?

下面是两种模式:

# == Schema Information 
# 
# Table name: users 
# 
# id     :integer   not null, primary key 
# username   :string(255) 
# encrypted_password :string(255) 
# salt    :string(255) 
# active    :boolean 
# disabled   :boolean 
# last_login   :time 
# first_name   :string(255) 
# last_name   :string(255) 
# address1   :string(255) 
# address2   :string(255) 
# city    :string(255) 
# state    :string(255) 
# postcode   :string(255) 
# phone    :string(255) 
# cell    :string(255) 
# email    :string(255) 
# created_at   :datetime 
# updated_at   :datetime 
# 
class User < ActiveRecord::Base 
    has_one :patient 

    attr_accessible :username, :password, :active, :disabled, :first_name, :last_name, 
    :address1, :address2, :city, :state, :postcode, :phone, :cell, :email 
    attr_accessor :password 

end 

# == Schema Information 
# 
# Table name: patients 
# 
# id   :integer   not null, primary key 
# user_id :integer 
# created_at :datetime 
# updated_at :datetime 
# 

class Patient < ActiveRecord::Base 
    belongs_to :user 
    accepts_nested_attributes_for :user 
    attr_accessible :user_id, :user_attributes 
end 

回答

0

试试这个(删除阵列支架和一组散列内藏在心里大括号):

p = Patient.new(:user_id => 2, :user_attributes => {:username => 'patient' ,:password => 'password'}) 

然而,我不知道你为什么要指定一个user_id并尝试创建一个新用户...也许你只是想要这个?

p = Patient.new(:user_attributes => {:username => 'patient', :password => 'password'}) 
+0

谢谢,第一部分是拼写错误 – 2011-02-23 15:29:40