Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.10 KB | None | 0 0
  1. # One to many
  2.  
  3. In the seed file
  4. ["Art, "Science", "Cats", "Sports", "Technology"].each do |cat|
  5. Category.create(name: cat)
  6. end
  7.  
  8. When trying to add category id
  9.  
  10. bin/rails g migration add_category_references_to_questions category:references
  11.  
  12. in the _form.html.erb file
  13.  
  14. f.collection_select(:category_id, Category.order(:name), :id, :name)
  15.  
  16. Category< ActiveRecord::Base
  17. has_many :questions, dpendent: :nullify
  18.  
  19. Question < ActiveRecor::Base
  20. belings_to :category
  21.  
  22. have to change permited params
  23.  
  24. params.require(:question).permit([:title, :body, :category_id])
  25. ------------------------------------------------------------------
  26. display category in the show page
  27.  
  28. law of demeter
  29.  
  30. @question.category.name
  31.  
  32. -We can create a method to help
  33.  
  34. In question.rb
  35.  
  36. def category_name
  37. category.name if category
  38. end
  39.  
  40. --------------------------------------------------------------------------
  41.  
  42. bin/rails g model comment body:text answer:references
  43.  
  44. -answer.rb file
  45.  
  46. has_many :comments, dependent: :destroy
  47.  
  48. -seeds.rb
  49. 100.times do
  50. q = question.new
  51. 10.times do
  52. a = q.asnwers.create(body: Faker::Company.catch_phrase)
  53. 5.times {a.comments.create(body: Faker::Company.bs)}
  54. end
  55. end
  56.  
  57. -find comments for a answer
  58. comments = []
  59. q.answers.each {|ans| comments << ans.comments }
  60.  
  61. -questions model
  62. has_many :comments, through: :answers
  63.  
  64. -routes.rb
  65. resources :answers, only: [:create, :destroy] do
  66. resources : comments, only [:create, destroy]
  67. end
  68.  
  69. or
  70. resources :answers, only: [:create, :destroy] do
  71. end
  72.  
  73. resources :answers, only [] do
  74. resources :comments, only: [:create, :destroy]
  75. end
  76.  
  77. ------------------------------------------------------
  78.  
  79. password_digest
  80.  
  81.  
  82. bin/rails g model user first_name last_name email password_digest
  83.  
  84. bin/rake db:migrate
  85.  
  86. -user.rb
  87.  
  88. attr_accessor :password
  89. attr_accessor :password_confirmation
  90.  
  91. Digest::
  92. y
  93. bcrypt
  94. Digest::Sha1.digest("abcd1234")
  95.  
  96. has_secure_password
  97.  
  98. gem "bcrypt"
  99.  
  100. -user.rb
  101.  
  102. has_secure_password
  103.  
  104. password_confirmation: "ASDFASdaf"
  105.  
  106. -user.rb
  107.  
  108. validates :password, length: {minimum: 6}
  109. validates :first_name, presence: true
  110. validates :last_name, presence: true
  111. validates :email, presence: true, uniqueness: true, format: (ruby regex email)
  112.  
  113. bin/rails g controller users
  114.  
  115. -routes.rb
  116.  
  117. resources :users, only: [:create, :new]
  118.  
  119. -users controller
  120.  
  121. def new
  122. @user = User.new
  123. end
  124.  
  125. -users view
  126.  
  127. users.html.erb
  128. <h1> Sign UP</h1>
  129.  
  130. form_for @user do |f|
  131.  
  132. f.label :first_name
  133. f.tex_field :first_name
  134.  
  135. f.label :last_name
  136. f.tex_field :last_name
  137.  
  138. f.label :email
  139. f.tex_field :email_field
  140.  
  141. f.label :password
  142. f.password_field :password
  143.  
  144. f.label :password_confirmation
  145. f.password_field :password_confrimation
  146.  
  147. f.submit
  148.  
  149. end
  150.  
  151. -users controller
  152.  
  153. def create
  154. params_user = require(:user).permit(:first_name :last_name :email :password :password_digest)
  155. @user = User.new params_user
  156. if @user.save
  157. redirect_to root_path
  158. else
  159. render :new
  160.  
  161. end
  162. end
  163.  
  164. --------------------------------------------
  165. ### saving sessions
  166. end
  167.  
  168. -welcome controller
  169.  
  170. def about
  171. cookies[:abc] = "xyz"
  172. end
  173.  
  174. def about
  175. cookies.signed[:abc] = "xyz"
  176. end
  177.  
  178. rails.logger.info cookies.signed.hello[:hello]
  179.  
  180.  
  181. cookies are limited
  182.  
  183. session[:foo] = bar
  184.  
  185. -user controller
  186.  
  187. session[:user_id] = @user.id
  188.  
  189. -application.html.erb
  190.  
  191.  
  192. if session[:user_id]
  193. User.find(session[:user_id]).first_name
  194. else
  195. link_to "sign up", new_user_path
  196. end
  197.  
  198. -application controller
  199.  
  200. defining it in application controller makes it usable in all controllers in our syste.
  201. Adding "helper_method :current_user" lets it usable in view files as well
  202.  
  203.  
  204. def current_user
  205. user.find(session[:user_id])
  206. end
  207. helper_method :current_user
  208. |
  209. |
  210. |
  211.  
  212. if session[:user_id]
  213. current_user.first_name
  214. else
  215. link_to "sign up", new_user_path
  216. end
  217.  
  218.  
  219.  
  220. def user_signed_in?
  221. session[:user_id].present?
  222. end
  223. helper_method :user_signed_in?
  224.  
  225.  
  226. if user_signed_in?
  227. current_user.first_name
  228. else
  229. link_to "sign up", new_user_path
  230. end
  231.  
  232.  
  233. --------------------------------------------------
  234. ### Conditioner assingment
  235.  
  236. def current_user
  237. @current_user ||= User.find(session[:user_id])
  238. end
  239. helper_method :current_user
  240.  
  241. Try to stick with 7 standard methods
  242.  
  243. bin/rails g controller sessions
  244.  
  245. -routes.rb
  246.  
  247. resources :sessions, only: [:new,:create,:destroy]
  248.  
  249. -sessions controller
  250.  
  251. def new
  252. end
  253.  
  254. -sessions view create new.html.erb
  255.  
  256. <h1>Sign in</h1>
  257.  
  258. form_tag sessions_path do
  259. label_tag :email
  260. text_fiedl_tag :email
  261.  
  262. label_tag :passward
  263. paddword_field_tag :password
  264.  
  265. submit_tag
  266.  
  267. end
  268.  
  269. -sessions controller
  270.  
  271. def create
  272. render json: params
  273. end
  274.  
  275. in consoler
  276.  
  277. u = user.find_by_email "tony@gmail.com"
  278. u.authenticate("supersecret")
  279.  
  280.  
  281. def create
  282. user = User.find_by_email params[:email]
  283. if user && user.authenticate(params[:password])
  284. session[:user_id] = user.id
  285. redirect_to root_path, notice: "Signed in!"
  286. else
  287. flash[:alert] = "wrong credentials!"
  288. render :new
  289. end
  290. end
  291.  
  292. -application controll
  293.  
  294. def sign_in(user)
  295. session[:user_id] = user.id
  296. end
  297.  
  298.  
  299. -sessions controller
  300.  
  301. def destroy
  302. session[:user_id] = nil
  303. redirect_to root_path, notice: "signed out!"
  304. end
  305.  
  306. - routes.rb
  307.  
  308. resources :sessions, only: [:new, :create] do
  309. delete :destroy, on: :collection
  310. end
  311.  
  312. -application.html.erb
  313.  
  314. link_to "log out", sessions_path, method: :delete
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement