ruby on rails - Add custom field from foreign table and validate it -


i have 2 models, user model , agent model. user has one/zero agent. each agent has "code" promo code.

when user signs up, can optionally enter agent code. when checking form, if user enters code, have check based on table "agents."

if code wrong, form not validated , error appears, if code correct associate user agent.

user model (user.rb)

class user < activerecord::base     enum role: [:user, :vip, :admin]     after_initialize :set_default_role, :if => :new_record?      has_one :agent      def set_default_role         self.role ||= :user     end      devise :database_authenticatable,          :registerable,          :recoverable,          :rememberable,          :trackable,          :validatable,          :confirmable,          :lockable end 

agent model (agent.rb)

class agent < activerecord::base     belongs_to :user end 

migration between user , agent

class addagenttousers < activerecord::migration     def change         add_reference :users, :agent, index: true         add_foreign_key :users, :agents     end end 

user db

  • id
  • email
  • password,encrypted_password,...
  • sign_in information (time,ip,...)
  • agent_id

agent db

  • id
  • code
  • name

how should this?

may you,

in user model add 1 attribute called code.

attr_accessor :code 

and validate :code on create like, agent present expected code.

validates :code_validation, on: :create def code_validation   c = agent.find_by_code(code)   if c.present?      self.agent = c   else     errors.add(:code, "agent not found code")   end   end 

Comments

Popular posts from this blog

java - Custom OutputStreamAppender not run: LOGBACK: No context given for <MYAPPENDER> -

java - UML - How would you draw a try catch in a sequence diagram? -

c++ - No viable overloaded operator for references a map -