#form関連(特にform_with)
###データベース上の値をセレクトボックスで出力させる
= f.collection_select :project_id, current_user.projects, :id, :name, {include_blank: "プロジェクトを選択してください"}, class: 'form-control'
このように記述する。
書き方の公式としては、
= f.collection_select :保存先のカラム名, 表示したいデータベースのモデル.all, :保存したい値, :表示させる文字列, {include_blank: "プロジェクトを選択してください"}, class: 'form-control'
#link_toの使い方
<%= link_to 'アカウント設定', "/users/edit" %>
これが基本的な使い方。
###戻るボタン
<%= link_to '戻る', :back %>
###data: { confirm: "削除してもよろしいですか?" }
リンクの先に行く前にメッセージを提示してくれる
= link_to '削除', task_path(@task), method: :delete, data: { confirm: "削除してもよろしいですか?" }
こんな感じで削除リンクとかで使うと便利かも。
#deivse関連
###ログアウトのリンク
<%= link_to 'ログアウト', destroy_user_session_path, method: :delete %>
###devise(認証機能)のviewを取得する方法
divise.rb
にて
config.scoped_views = false
をコメント外して、trueに変更する。そのあとに
rails g devise:views
とコマンドを打つ。
###サインしていたら〜の処理
<% if user_signed_in? %>
処理
<% end %>
このようにuser_signed_in?
メソッドを使用する
###current_userについて
ログイン中の自分のアカウント情報を取得できるcurrent_user
だが、user
の部分は
変化する。
例えば、devise機能でモデル名をuserとしたら、current_user
となるが、
モデル名をcompanyとしたら、current_company
となる。
idを取り出したい時はcurrent_company.id
で取得することができる。
current_userはuser = User.find(current_user)
と同じなので、そのままアソシエーションにも使用できる。
my_name = current_user.profile.name
# user = User.find(current_user.id)
# my_name = user.profile.name
#これと同じような動きになる
といったようにできる
#マイグレーション
###マイグレーションを完全リセットして、変更を反映させる
rake db:migrate:reset
###上のコマンドでエラーが出た時
rails db:environment:set
を打てば治る
#モデル
###ログイン中の自分の情報を取得(二通りある)
####一つ目
@user = User.find(current_user.id)
モデルのfindメソッドで引数に現在ログイン中の自分のdeviseの情報を格納する。
deviseの自分のアカウント情報はcurrent_user
で取得できる。その中でもidを取得したいのであれば、
current_user.id
とする。
ちなみに、コントローラーとモデルで関係ないモデルも使用することができる。
####二つ目
@user = current_user
で自分のアカウント情報が取得できる。
しかし、これはモデルを通してないから、DBのリレーションをする際には、ひとつ目の方法で行うこと。
##バリデーション
###belongs_toによる勝手に設定されるバリデーションを防ぐ
# project_id変更時のnilを許可する
belongs_to :project, optional: true
このようにoptional: true
というオプションを追加すると値のnilを許可する。
#コントローラー
###特定のカラム(値)のみUpdateする方法(controller上で値を変更する)
user = User.find(current_user.id)
user.age = 50
user.save
通常はviewでフォームを作成して、updateするが、controller上で値を変更する場合は、このような記述で変更することができる。
###アカウント削除の時に関連するデータも削除する方法
dependent => :destroyを記述することで、退会時にユーザID情報(user_idを持つもの)を持つデータを削除する。
has_many :messages, :dependent => :destroy#退会時コメントも削除
#左上のやつを消す方法
/?pp=disable
をURLの最後に追加する
一定期間の間は、一回追加するだけで消える。
また再び左のやつが現れたら上のをURLに追加してリロードする
#Railならではの省略系
###@userの正体
<% link_to 'リンク名', @user %>
このような書き方がある。これはいわゆる
@user = User.find(2)
url_for(@user)
# => "/users/2"
このような内容となっている。
恐らく、usersコントローラーでuser.idを指定していると考える。
#routes.rb
###resourcesの考え方
index
new
create
edit #対象のデータ
update #対象のデータ
show #対象のデータ
destroy #対象のデータ
対象のデータが必要なアクションにはid
が必要となる。
###リソースとは
データベースのテーブルに保存される、レコード1行分の情報
のこと。