如何建立一个Devise模型和我制作的模型之间的关联?

时间:2013-06-17 00:19:38

标签: ruby-on-rails ruby web devise

如何使用用户(设计存储电子邮件和密码)来归属于配置文件和配置文件has_one用户?当我查找数据库时,profile_int仍然是嗯嗯...不确定我哪里做错了?

class User < ActiveRecord::Base
 # Include default devise modules. Others available are:
 # :token_authenticatable, :confirmable,
 # :lockable, :timeoutable and :omniauthable
    devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

 # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :profile_id
 # attr_accessible :title, :body

  belongs_to :profile
end


class Profile < ActiveRecord::Base
 attr_accessible :dob, :firstName, :lastName, :school_id, :schYear, :user_attributes


 belongs_to :school
 has_one :user
 accepts_nested_attributes_for :user

end

我知道通常我应该做这样的事情。这个Profile.create(.......)但是如果我用设计做这件事我不知道该怎么做

2 个答案:

答案 0 :(得分:0)

:schoolstrong text应该是':schoolstrong_text'吗?你有没有运行rake db:migrate

此外,检查您的架构也可能会有所帮助。

答案 1 :(得分:0)

将设计UserProfile模型相关联的一种常见做法是使配置文件成为用户的子项:

# app/models/user.rb
class User < ActiveRecord::Base
    has_one :profile
end

# app/models/profile.rb
class Profile < ActiveRecord::Base
    belongs_to :user
end

然后,在User模型中,您将创建一个after_create挂钩来创建新的Profile模型并将其与新创建的用户关联:

# app/models/user.rb
after_create :create_profile

def create_profile
    profile = Profile.create
    self.profile = profile
    self.save
end