2013-06-27 3 views
0

У меня есть много тем по поводу этого вопроса и до сих пор я не могу понять, что я делаю неправильно:MassAssignmentSecurity :: Ошибка: не массовый Присвоить защищенные атрибуты: security_users_detail

У меня есть две модели, с следующие соотношения:

  • securty_user_rb:

    attr_accessible ...(some fields) 
           :security_users_detail 
    
    has_one :security_users_detail, dependent: :destroy 
    
  • security_users_detail.rb

    attr_accessible ...(some fields) 
    
    belongs_to :security_user 
    

и в security_users_controlller.rb Я делаю это в новой акции:

@security_user = SecurityUser.new(params[:security_user]) 
@security_user.build_security_users_detail(security_users_detail: SecurityUsersDetail.new) 

Почему я не могу построить соединение и я получаю

Can't mass-assign protected attributes: security_users_detail

ошибка, поскольку у меня есть attr_accessible: security_users_detail в модели?

EDIT:

У меня есть попытаться прокомментировать следующую строку в моем applicatin.rb файл, чтобы проверить, если этот вопрос будет решен:

config.active_record.whitelist_attributes = true 

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

ответ

0

Вся проблема была вызвана валидацией в моей модели . Модель. У меня есть проверки, которые проверяют как формат, так и наличие некоторых полей, поэтому, по-видимому, рельсы не позволили мне создать объект с пустыми полями ,

Чтобы исправить это, я должен использовать validate: false.

я потерял много времени, читая о рельсов по умолчанию, как

config.active_record.whitelist_attributes = true 

и использование attr_accessible, но мне кажется, что не удалось валидация может скинул же

Can't mass-assign protected attributes

ошибки.