Профиль здания в пользовательской модели для регистрации, user_id в attr_accessible большая ошибка?

Используя devise в качестве моей системы аутентификации, я хотел бы создать свой профиль при регистрации пользователя.

Я прочитал много тем об этом на 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

Мои два вопроса:

Имеет user_id в attr_accessible dangual (массовое назначение)?

Должен ли я создавать свой профиль в контроллере (создание регистрации) с помощью транзакции? (Здесь, если мой профиль не удается создать, у меня все еще есть запись пользователя)


person benoitr    schedule 15.06.2013    source источник


Ответы (1)


Имеет user_id в attr_accessible dangual (массовое назначение)?

да, вам следует избегать добавления внешних ключей в attr_accessible большую часть времени, хотя есть сценарий, который можно использовать (если ассоциация общедоступна, например, страны), или если вы переопределяете установщик и выполняете какую-то проверку.

Должен ли я создавать свой профиль в контроллере (создание регистрации) с помощью транзакции? (Здесь, если мой профиль не удается создать, у меня все еще есть запись пользователя)

просто добавьте validates_associated :profile в модель пользователя и, возможно, также validates :profile, presence: true (как-то забыл, разрешает ли validates_associated nil или нет)

person Roy    schedule 15.06.2013