我有两个模型用户和个人资料(用户来自设计)。用户可以拥有许多配置文件,因此我创建了一个迁移,以将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时,我能够看到配置文件。
请帮助解决这个问题,我能够解决这个问题很长一段时间。让我知道您是否需要更多信息来解决这个问题。
答案 0 :(得分:0)
也许在你的控制器中尝试这样的事情:
if current_user.profiles.count == 0
profile = Profile.create
current_user.profiles << profile
end