form_for for a has_one relation model

16 views
Skip to first unread message

Jean

unread,
Nov 4, 2012, 5:19:46 PM11/4/12
to rubyonra...@googlegroups.com
Hello guys, I'm new in rails and I have the following question:

I have two model

user and user_informacion:

class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation
  has_one :user_information
  has_secure_password
  
  before_save { |user| user.email = email.downcase }
  before_save :create_remember_token
  
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
  validates :password, presence: true, length: { minimum: 6 }, confirmation: true, unless: Proc.new { |a| !a.new_record? && a.password.present? }
  
def send_password_reset
self.password_reset_token = SecureRandom.urlsafe_base64
self.password_reset_at = Time.zone.now
self.password = self.password
self.save!(:validate => false )
UserMailer.password_reset(self).deliver
end
def reset_password_token
self.password_reset_token = nil
self.password_reset_at = nil
save!
end
  
  private
 
  def create_remember_token
  if self.new_record?
  self.remember_token = SecureRandom.urlsafe_base64
  end
  end
  
end


class UserInformation < ActiveRecord::Base
  belongs_to :user
  attr_accessible :address, :address2, :business, :descripcion, :identification_number, :mobile_cell, :name, :phone_number
  validates :address, presence: true, length: { :maximum => 250 } 
  validates :address2, length: { :maximum => 250 } 
  validates :descripcion, presence: true, length: { :maximum => 300 } 
  validates :identification_number, presence: true
  validates :phone_number, presence: true, length: { :is => 11 } 
  validates :mobile_cell, :length => { :is => 11 }
  validates :user_id, presence: true
end


As you can see User has_one UserInformation

My routes are like this:

  resources :users do
 member do
   resource :user_information
 end
  end
  resources :sessions, only: [:new, :create, :destroy]
  resources :password_resets
    
  root to: 'users#new'
  
  match '/signup',  to: 'users#new'
  match '/signin',  to: 'sessions#new'
  match '/signout', to: 'sessions#destroy', via: :delete


I having a lot of problem tying to figure out how to make a form_for for my create action of my user_information. I tried with form_form(@user_information) do |f|, form_for([user, user.user_information.build]) do |f| but I always get an error. Does anyone can help me with this form_fom, please??? The form_for if for my new view of may user_information.

Reply all
Reply to author
Forward
0 new messages