teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

変更点

2020/10/25 03:11

投稿

tomato185
tomato185

スコア29

title CHANGED
File without changes
body CHANGED
@@ -103,4 +103,38 @@
103
103
  end
104
104
  end
105
105
 
106
+ ```
107
+
108
+ ```
109
+ farmers_Controller.rb
110
+ class FarmersController < ApplicationController
111
+
112
+ def new
113
+ @farmer_resister = Farmer.new
114
+ @farmer_resister.farmer_images.build
115
+ end
116
+
117
+ def create
118
+ @farmer_resister = Farmer.new(farmer_params)
119
+ if @farmer_resister.save!
120
+ farmer_log_in @farmer_resister
121
+ flash.now[:success] = "農家の登録が完了しました。"
122
+ redirect_to farmer_path(@farmer_resister.id)
123
+ else
124
+ flash.now[:danger] = "農家登録に失敗しました。お手数ですが、もう一度登録しなおしてください。"
125
+ render "new"
126
+ end
127
+ end
128
+
129
+
130
+ private
131
+
132
+ def farmer_params
133
+ params.require(:farmer).permit(:name, :email, :tel, :postal_code, :prefecture, :address, :comment, :password, :password_confirmation, farmer_images_attributes:
134
+ [
135
+ :id, :farmer_logo, :farmer_image
136
+ ])
137
+ end
138
+ end
139
+
106
140
  ```

1

追加

2020/10/25 03:11

投稿

tomato185
tomato185

スコア29

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  ### 発生している問題・エラーメッセージ
11
11
  ```
12
- 都道府県と住所が空だよ。
12
+ Validation failed: Prefecture can't be blank, Address can't be blank.
13
13
 
14
14
  ```
15
15
 
@@ -20,11 +20,26 @@
20
20
  ``onKeyUp:"AjaxZip3.zip2addr(this,'','prefecture','address');"``を外して、都道府県や住所も全て入力すれば
21
21
  しっかりとDBへは登録されます。
22
22
 
23
+ ```
24
+ ログ
23
25
 
26
+ Parameters: {"utf8"=>"✓", "authenticity_token"=>"M7JNCtF75uixj6s6kw8pZk0ChuDN4N8Ev8f1I0mYt0x75HyDOi1fG/EWf36RT8y2NKrxgMh5J7+JnLNeh0SqRA==", "farmer"=>{"name"=>"XXX農園", "email"=>"ccc@ccc.com", "tel"=>"00000000000", "postal_code"=>"0608588", "comment"=>"テストです。", "farmer_images_attributes"=>{"0"=>{"farmer_logo"=>#<ActionDispatch::Http::UploadedFile:0x00007fd6e90f76a8 @tempfile=#<Tempfile:/var/folders/19/8dw27p954zv9p2k_90hvh3ww0000gn/T/RackMultipart20201025-19521-ckzet6.png>, @original_filename="lemon.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"farmer[farmer_images_attributes][0][farmer_logo]\"; filename=\"lemon.png\"\r\nContent-Type: image/png\r\n">, "farmer_image"=>#<ActionDispatch::Http::UploadedFile:0x00007fd6e90f7360 @tempfile=#<Tempfile:/var/folders/19/8dw27p954zv9p2k_90hvh3ww0000gn/T/RackMultipart20201025-19521-h9zj8i.png>, @original_filename="apple.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"farmer[farmer_images_attributes][0][farmer_image]\"; filename=\"apple.png\"\r\nContent-Type: image/png\r\n">}}, "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "prefecture"=>"北海道", "address"=>"札幌市中央区", "commit"=>"登録"}
27
+
28
+ (0.1ms) begin transaction
29
+ ↳ app/controllers/farmers_controller.rb:10
30
+ Farmer Exists (0.3ms) SELECT 1 AS one FROM "farmers" WHERE LOWER("farmers"."email") = LOWER(?) LIMIT ? [["email", "ccc@ccc.com"], ["LIMIT", 1]]
31
+ ↳ app/controllers/farmers_controller.rb:10
32
+ (0.2ms) rollback transaction
33
+ ↳ app/controllers/farmers_controller.rb:10
34
+ Completed 422 Unprocessable Entity in 142ms (ActiveRecord: 2.2ms)
35
+
36
+ ```
37
+
38
+
24
39
  ### 該当のソースコード
25
40
 
26
41
  ```
27
- (views/products/new.html.erb)一部記載
42
+ (views/farmers/new.html.erb)一部記載
28
43
  ここで登録したい商品の情報を記入(下記はタグを複数選択可)
29
44
             <%= form_for @product_resister, html: {class: "new_product"} do |f| %>
30
45
  <%= f.label :postal_code, "郵便番号", class:"form_field" %>
@@ -37,4 +52,55 @@
37
52
  <%= f.text_field :address, class: 'form_area', required:"required" %>
38
53
  <%= f.submit "登録", class:"resister_btn"%>
39
54
  <% end %>
55
+ ```
56
+
57
+ ```
58
+ (farmer.rb)
59
+ class Farmer < ApplicationRecord
60
+ attr_accessor :remember_token
61
+ before_save {self.email = email.downcase }
62
+
63
+ validates :name, presence: true, length: {maximum: 50}
64
+ VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i
65
+ validates :email, presence: true,
66
+ length: {maximum: 255},
67
+ format: {with: VALID_EMAIL_REGEX},
68
+ uniqueness: {case_sensitive: false}
69
+ has_secure_password
70
+ validates :password, presence: true, length: {minimum: 6}, allow_nil:true
71
+ validates :tel, presence: true, length: {in: 10..11}
72
+ validates :postal_code, presence: true
73
+ validates :prefecture, presence: true
74
+ validates :address, presence: true
75
+ validates :comment, presence: true
76
+
77
+ has_many :products, dependent: :destroy
78
+
79
+ has_many :farmer_images, dependent: :destroy
80
+ accepts_nested_attributes_for :farmer_images
81
+
82
+ def Farmer.digest(string)
83
+ cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost
84
+ BCrypt::Password.create(string, cost: cost)
85
+ end
86
+
87
+ def Farmer.new_token
88
+ SecureRandom.urlsafe_base64
89
+ end
90
+
91
+ def remember
92
+ self.remember_token = Farmer.new_token
93
+ update_attribute(:remember_digest, Farmer.digest(remember_token))
94
+ end
95
+
96
+ def authenticated?(remember_token)
97
+ return false if remember_digest.nil?
98
+ BCrypt::Password.new(remember_digest).is_password?(remember_token)
99
+ end
100
+
101
+ def forget
102
+ update_attribute(:remember_digest, nil)
103
+ end
104
+ end
105
+
40
106
  ```