在用户模型中构建用于注册的配置文件,是attr_accessible中的user_id大错误吗?

时间:2013-06-15 13:53:18

标签: ruby-on-rails devise attr-accessible

使用devise作为我的身份验证系统我想在用户注册时构建我的个人资料。

我在SO上阅读了很多关于此的主题,并决定采用在模型中构建配置文件的方法:

profile.rb

class Profile < ActiveRecord::Base
  belongs_to :user

  attr_accessible :user_id, # FIXME This is secure?
end

user.rb

class User < ActiveRecord::Base

  devise ...

  has_one :profile
  accepts_nested_attributes_for :profile

  def build_profile
    Profile.create(:user_id => id)
  end

end

我的两个问题是:

attr_accessible中的user_id是危险的(群众分配)?

我是否必须使用交易将我的个人资料创建放在控制器中(注册创建)? (如果我的个人资料无法构建,我仍然有用户记录)

1 个答案:

答案 0 :(得分:2)

  

attr_accessible中的user_id是危险的(群众分配)?

是的,您应该避免在大多数时间将外键添加到attr_accessible,尽管可以使用(如果关联可以像国家一样公开访问),或者如果您覆盖setter并执行某种操作检查..

  

我是否必须使用交易将我的个人资料创建放在控制器中(注册创建)? (如果我的个人资料无法构建,我仍然有用户记录)

只需在用户模型中添加validates_associated :profile,也可以validates :profile, presence: true(如果validates_associated允许为零,则有点忘记)