Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # One to many
- In the seed file
- ["Art, "Science", "Cats", "Sports", "Technology"].each do |cat|
- Category.create(name: cat)
- end
- When trying to add category id
- bin/rails g migration add_category_references_to_questions category:references
- in the _form.html.erb file
- f.collection_select(:category_id, Category.order(:name), :id, :name)
- Category< ActiveRecord::Base
- has_many :questions, dpendent: :nullify
- Question < ActiveRecor::Base
- belings_to :category
- have to change permited params
- params.require(:question).permit([:title, :body, :category_id])
- ------------------------------------------------------------------
- display category in the show page
- law of demeter
- @question.category.name
- -We can create a method to help
- In question.rb
- def category_name
- category.name if category
- end
- --------------------------------------------------------------------------
- bin/rails g model comment body:text answer:references
- -answer.rb file
- has_many :comments, dependent: :destroy
- -seeds.rb
- 100.times do
- q = question.new
- 10.times do
- a = q.asnwers.create(body: Faker::Company.catch_phrase)
- 5.times {a.comments.create(body: Faker::Company.bs)}
- end
- end
- -find comments for a answer
- comments = []
- q.answers.each {|ans| comments << ans.comments }
- -questions model
- has_many :comments, through: :answers
- -routes.rb
- resources :answers, only: [:create, :destroy] do
- resources : comments, only [:create, destroy]
- end
- or
- resources :answers, only: [:create, :destroy] do
- end
- resources :answers, only [] do
- resources :comments, only: [:create, :destroy]
- end
- ------------------------------------------------------
- password_digest
- bin/rails g model user first_name last_name email password_digest
- bin/rake db:migrate
- -user.rb
- attr_accessor :password
- attr_accessor :password_confirmation
- Digest::
- y
- bcrypt
- Digest::Sha1.digest("abcd1234")
- has_secure_password
- gem "bcrypt"
- -user.rb
- has_secure_password
- password_confirmation: "ASDFASdaf"
- -user.rb
- validates :password, length: {minimum: 6}
- validates :first_name, presence: true
- validates :last_name, presence: true
- validates :email, presence: true, uniqueness: true, format: (ruby regex email)
- bin/rails g controller users
- -routes.rb
- resources :users, only: [:create, :new]
- -users controller
- def new
- @user = User.new
- end
- -users view
- users.html.erb
- <h1> Sign UP</h1>
- form_for @user do |f|
- f.label :first_name
- f.tex_field :first_name
- f.label :last_name
- f.tex_field :last_name
- f.label :email
- f.tex_field :email_field
- f.label :password
- f.password_field :password
- f.label :password_confirmation
- f.password_field :password_confrimation
- f.submit
- end
- -users controller
- def create
- params_user = require(:user).permit(:first_name :last_name :email :password :password_digest)
- @user = User.new params_user
- if @user.save
- redirect_to root_path
- else
- render :new
- end
- end
- --------------------------------------------
- ### saving sessions
- end
- -welcome controller
- def about
- cookies[:abc] = "xyz"
- end
- def about
- cookies.signed[:abc] = "xyz"
- end
- rails.logger.info cookies.signed.hello[:hello]
- cookies are limited
- session[:foo] = bar
- -user controller
- session[:user_id] = @user.id
- -application.html.erb
- if session[:user_id]
- User.find(session[:user_id]).first_name
- else
- link_to "sign up", new_user_path
- end
- -application controller
- defining it in application controller makes it usable in all controllers in our syste.
- Adding "helper_method :current_user" lets it usable in view files as well
- def current_user
- user.find(session[:user_id])
- end
- helper_method :current_user
- |
- |
- |
- if session[:user_id]
- current_user.first_name
- else
- link_to "sign up", new_user_path
- end
- def user_signed_in?
- session[:user_id].present?
- end
- helper_method :user_signed_in?
- if user_signed_in?
- current_user.first_name
- else
- link_to "sign up", new_user_path
- end
- --------------------------------------------------
- ### Conditioner assingment
- def current_user
- @current_user ||= User.find(session[:user_id])
- end
- helper_method :current_user
- Try to stick with 7 standard methods
- bin/rails g controller sessions
- -routes.rb
- resources :sessions, only: [:new,:create,:destroy]
- -sessions controller
- def new
- end
- -sessions view create new.html.erb
- <h1>Sign in</h1>
- form_tag sessions_path do
- label_tag :email
- text_fiedl_tag :email
- label_tag :passward
- paddword_field_tag :password
- submit_tag
- end
- -sessions controller
- def create
- render json: params
- end
- in consoler
- u = user.find_by_email "tony@gmail.com"
- u.authenticate("supersecret")
- def create
- user = User.find_by_email params[:email]
- if user && user.authenticate(params[:password])
- session[:user_id] = user.id
- redirect_to root_path, notice: "Signed in!"
- else
- flash[:alert] = "wrong credentials!"
- render :new
- end
- end
- -application controll
- def sign_in(user)
- session[:user_id] = user.id
- end
- -sessions controller
- def destroy
- session[:user_id] = nil
- redirect_to root_path, notice: "signed out!"
- end
- - routes.rb
- resources :sessions, only: [:new, :create] do
- delete :destroy, on: :collection
- end
- -application.html.erb
- link_to "log out", sessions_path, method: :delete
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement