0

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

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

配置文件.rb

class Profile < ActiveRecord::Base
  belongs_to :user

  attr_accessible :user_id, # FIXME This is secure?
end

用户.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 是否危险(批量分配)?

我是否必须使用事务将我的个人资料创建放入控制器(注册创建)?(在这里,如果我的个人资料无法建立,我仍然有用户记录)

4

1 回答 1

2

attr_accessible 中的 user_id 是否危险(批量分配)?

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

我是否必须使用事务将我的个人资料创建放入控制器(注册创建)?(在这里,如果我的个人资料无法建立,我仍然有用户记录)

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

于 2013-06-15T14:45:15.953 回答