Для создания горшки меда поля я добавил к моей User
модели виртуальный атрибут, если заполнено отправит пользователя на корневой странице:Перенаправление при наличии атрибута?
class User < ActiveRecord::Base
attr_accessible :email, :password, :remember_me, :username, :fake_field
attr_accessor :fake_field
devise :database_authenticatable, :registerable............
before_create :setup_default_role_for_new_users
ROLES = %w[admin default banned]
def self.fake_field(string)
end
private
def setup_default_role_for_new_users
if self.fake_field.present?
redirect_to root_url
end
if self.role.blank?
self.role = "default"
end
end
end
Форма работает для подписания, но при заполнении fake_field
I get:
undefined local variable or method `root_url' for #<User:0x5a06618>
Это нормально? Разве это не сделает 404 для бота?
В идеале я хотел бы, чтобы боты вышли на страницу ошибки 404.
Я пытался избежать создания RegistrationsController для разработки, поэтому я использовал его в модели, или мне не нужно это делать? Спасибо за советы, я тоже переименую поле. – LearningRoR
Ваша модель не нуждается в дополнительных атрибутах, и вы должны сделать это в контроллере. Рендеринг или перенаправление с модели нарушает принципы архитектуры MVC. – shime