inner join
inner joinとは
日本語で言えば内部結合。
内部結合では、2つのDBで共通のカラムを持つ場合、その値が一致するものだけを結合する。
以下構文
SELECT table_name.column_name from table1 INNER JOIN table2 on table1.column = table2.column;
テーブル1からcolumn_nameを取ってきた後に、テーブル1と2でカラム名が同じものを結合して1つのテーブルとする。
railsでは
モデル名.joins(条件)
Category.joins(:posts)
# SELECT categories.* FROM categories INNER JOIN posts ON posts.category_id = categories.id
参考
rails個人的疑問点・解説まとめ
ルーティング
ルーティングはconfigディレクトリ以下のroutes.rbで行う rootメソッド利用して、 コントローラー名♯アクション名 を指定するとトップページに対するアクションを指定できる。
コントローラー
app/controlelr以下に設定 コントローラークラスのパブリックメソッドをアクションと呼ぶ
フラッシュ アクションとアクションの間で情報を受け渡す機能
テンプレート
<% %> で囲まれた部分はrubyのコードして認識される
レイアウトテンプレート
全体の枠となる app/view/layoutsの下に置く
メソッド等
content_tag(tag,content)
resources
自動的にRESTfulなルーティングを作成
generator
rails g controller rails generate controller NAME [action action] [options] コントローラーとビューを作成する
form_for
form_for(@user) do |f|
「フォームのactionは/usersというURLへのPOSTである」と自動的に判断する。 POSTの場合、users#createアクションが指定される! @userはどこからきた?
findとfind_by
findはidを用いてデータを取得する。id以外は使用できない。 該当データがない場合、ActiveRecord::RecordNotFoundが返ってくる。 find_byはid以外の条件でも検索可能で、該当データがない場合はnilが返ってくる。 データがない場合を想定する際にはfind_byを使う。
疑問点
paramsとは何か URLから送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する
messages_urlとは何か リンクのためのメソッド群の1つ prefix+path で prefix+urlはリダイレクトの場合用いる
link_toの詳細 link_to 表示文字列, リンク先 link_to(文字列, パス [, オプション, HTMLオプション])
form_forについて
class MessagesController < ApplicationController def index @messages = Message.all end
これで何をしている?
yieldについて
renderとredirectの違い redirect_toは新たにHTTPRequestを呼び出す(getのみ)指定したアクション(controllerの中のメソッド) renderは指定したviewのhtmlを表示する
redirect_toのurlは何を指定している?
redeirect_to root_url redirect_to :new redirect_to 'new' 何が違う? まず、リンク先にモデルを渡すと、showアクションが呼ばれる redirect_to :newというのはある? render :newの場合は、newのviewにレンダリングする。
<%= f.label :password, 'password' %>
の:passwordと 'password'は何を表している?
gitで変更を削除する時
git addする前
ローカルの変更を取り消したい時はよくある。
git checkout ファイル名
で指定ファイルの変更を元に戻す。
また、
git checkout .
ですべての変更を削除する。
しかし、追加したファイルは削除されないので、ファイルまで削除する場合は
git clean -df .
で行う。
linuxコマンドで正規表現を使ってファイルを操作
現在のディレクトリ内でtxtを含むファイルのみを削除したい場合
ls . | grep txt | xargs rm
|(バーティカルバー)はパイプと呼びますが、 コマンドの標準出力を次のコマンドに渡します。
grepコマンドは
grep パターン 対象ファイル
で対象ファイル内からパターンにマッチする行を表示します。
xargsは標準入力やファイルからリストを読み込み、コマンドラインを作成して実行するというコマンドです。
ls . | grep txt | xargs rm
は、grep txtの結果を引数にしてrmを実行していることになります。
これではディレクトリも対象に削除しようとする(出来ないが)ので、そこは気になる所ですね。