无法使用Devise for Users Table在新方法中更新我的外键

时间:2013-01-05 14:27:46

标签: ruby-on-rails-3 devise pg

我有两个模型用户和个人资料(用户来自设计)。用户可以拥有许多配置文件,因此我创建了一个迁移,以将user_id添加到配置文件。

class Profile < ActiveRecord::Base
belongs_to :user

attr_accessible :description, :name, :product, :image, :price , :user_id
mount_uploader :image, ImageUploader
validates_presence_of :name, :product,:image, :price
end

class User < ActiveRecord::Base

# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :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

# attr_accessible :title, :body
has_many :profiles
validates_associated :profiles
end

在我的个人资料控制器中,我有一个新方法来创建新的个人资料。我希望当用户登录时,他只能看到他的个人资料。    def new

@profile = current_user.profiles.build

#@profile = @user.profile.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @profile }
end

理想情况下,我的user_id列应该使用build进行更新,但我的user_id不会更新,这就是不显示配置文件的原因。我正在使用带有pg gem的postgresql,当我手动为该配置文件添加user_id时,我能够看到配置文件。

请帮助解决这个问题,我能够解决这个问题很长一段时间。让我知道您是否需要更多信息来解决这个问题。

1 个答案:

答案 0 :(得分:0)

也许在你的控制器中尝试这样的事情:

if current_user.profiles.count == 0
  profile = Profile.create
  current_user.profiles << profile
end