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

 

参考

joins - リファレンス - - Railsドキュメント

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を実行していることになります。

 

これではディレクトリも対象に削除しようとする(出来ないが)ので、そこは気になる所ですね。