在用户模型中建立配置文件进行注册,是attr_accessible中的user_id的大错误



使用设计作为我的身份验证系统,我想在用户注册时构建我的配置文件。

我在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

我有两个问题:

有user_id在attr_accessible危险(mass- assignment)?

我是否必须使用事务将我的配置文件创建放在控制器(注册创建)中?(这里如果我的配置文件构建失败,我仍然有一个用户记录)

有user_id在attr_accessible危险(mass- assignment)?

是的,你应该避免在大多数情况下为attr_accessible添加外键,尽管在某些情况下它是可以使用的(如果关联可公开访问,例如国家),或者如果你重写setter并做某种检查。

我是否必须使用事务将我的配置文件创建放在控制器(注册创建)中?(这里如果我的配置文件构建失败,我仍然有一个用户记录)

只需在用户模型中添加validates_associated :profile,也可以添加validates :profile, presence: true(有点忘记validates_associated是否允许nil)

相关内容

  • 没有找到相关文章

最新更新