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

質問編集履歴

1

スキーマ情報、コントローラー情報の追加

2019/04/25 20:03

投稿

ma5toy
ma5toy

スコア15

title CHANGED
File without changes
body CHANGED
@@ -73,7 +73,94 @@
73
73
  belongs_to :tag
74
74
  end
75
75
  ```
76
+ ```
77
+ スキーマ
78
+ create_table "articles", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
79
+ t.text "article_title", null: false
80
+ t.text "article_content", null: false
81
+ t.integer "user_id", null: false
82
+ t.integer "category_id"
83
+ t.integer "sub_category_id"
84
+ t.string "article_thumbnail"
85
+ t.integer "impressions_count", default: 0
86
+ t.datetime "created_at", null: false
87
+ t.datetime "updated_at", null: false
88
+ end
89
+ ```
90
+ ```
91
+ コントローラー
92
+ class Users::ArticlesController < ApplicationController
93
+ before_action :require_login
94
+ before_action :logedin_admin?
76
95
 
96
+ def show
97
+ @article = Article.find(params[:id])
98
+ end
99
+
100
+ def new
101
+ @article = Article.new
102
+ end
103
+
104
+ def edit
105
+ @article = Article.find(params[:id])
106
+ end
107
+
108
+ def create
109
+ @article = Article.new(article_params)
110
+ respond_to do |format|
111
+ begin
112
+ ActiveRecord::Base.transaction do
113
+ @article.save!
114
+ end
115
+ # 正常処理
116
+ format.html { redirect_to articles_path }
117
+ format.json { render :index, location: @article }
118
+ rescue ActiveRecord::RecordInvalid
119
+ # バリデーション処理
120
+ @article.valid?
121
+ format.html { render :new }
122
+ format.json { render json: @article.errors }
123
+ rescue => e
124
+ Rails.logger.error e
125
+ Rails.logger.error e.backtrace.join("\n")
126
+ Raven.capture_exception(e)
127
+ flash.now[:danger] = "保存に失敗しました"
128
+ format.html { render :new }
129
+ end
130
+ end
131
+ end
132
+
133
+ def update
134
+ @article = Article.find(params[:id])
135
+ if @article.update!(article_params)
136
+ redirect_to root_url
137
+ else
138
+ render :edit
139
+ end
140
+ end
141
+
142
+ def destroy
143
+ @article = Article.find(params[:id])
144
+ @article.destroy!
145
+ redirect_to users_articles_path
146
+ end
147
+
148
+ private
149
+
150
+ def article_params
151
+ params.require(:article).permit(:article_title, :article_content, :article_thumbnail, :article_thumbnail_cache, :category_id, :sub_category_id, {:tag_ids => []}, :user_id)
152
+ end
153
+
154
+ def logedin_admin?
155
+ redirect_to articles_path unless current_user.admin?
156
+ end
157
+
158
+ def set_user
159
+
160
+ end
161
+ end
162
+ ```
163
+
77
164
  ### 試したこと
78
165
  [ActiveRecordでidがないテーブルにデータを保存しようとすると"nil is not a symbol"とか言われる](http://shinonome.hatenablog.jp/entry/2015/07/22/231534)
79
166
  ### 補足情報(FW/ツールのバージョンなど)