2012年10月15日月曜日

RailsでArelを使ってみたよ

( ̄(エ) ̄)彡☆

Railsの検索でクエリをゴリゴリ書くのもいいが…

あんまりクールでないwww

なのでArelを使ってみる

GitHub → Arel

例えばOR句を使いたい場合
users = User.arel_table
User.where(users[:name].matches('%murajun1978%').or(users[:admin].eq(true))

生成されたSQL
SELECT "users".* FROM "users" 
WHERE (("users"."name" LIKE '%murajun1978%' OR "users"."admin" = 't'))

LIKE句を使いたかったのでmatchesを強引に使いました (。・x・)ゝ

AND句はorをandに変えて使ってね

Rails 【モデル】 scopeを使って検索してみたよ

( ̄(エ) ̄)彡☆

コントロールに書くと…
@user = User.where(:name => params[:name])

でも、こういうのはモデルに書きたいヘ(^o^)ノ

Userモデル
class User < ActiveRecord::Base
  scope :search, lambda { |name|
    where("name = ?", "#{name}") 
  }
end

使い方はこんな感じ
@user = User.search

すっきりしたねーヾ(╹◡╹✽三✽╹◡╹)ノ″

んじゃ、複数の場合は…

Userモデル
class User < ActiveRecord::Base
  scope :search, lambda { |name, admin|
    where("name = ?", "#{name}").where("admin = ?", "#{admin}") 
  }
end

こんな感じでwhere文をくっつける事もできるのだー

しかも…
@user = User.search(params[:name], nil)

引数がnilでもそのまま書けるΣ(゚Д゚;

Railsなしでは生きて行けませんwww

2012年10月9日火曜日

Railsでid以外のカラムを主キーにしてみたよ

( ̄(エ) ̄)彡☆

新規プロジェクトをRailsで作るなら設定より規約にしたがっていけば良いのですが…

既存データのテーブル構造を使う場合は主キーがidとは限らない (。・x・)ゝ

というか、まずないwww

そんな時はModelにset_primary_key [:column]を追加してあげると幸せになれる

例えば
Areasテーブル
attr_accessible :area_id, :name
has_many :customers

+ set_primary_key :area_id
attr_accessible :area_id, :name
has_many :customers

Customersテーブル
attr_accessible :area_id, :name
belongs_to :area

Customer_index_view
<% @customers.each do |customer| %>
    <%= customer.name %>

    <%= customer.area_id %>

    <%= customer.area.name %> ← 今まで通りに使えるヘ(^o^)ノ

    <%= link_to 'Show', customer %>

    <%= link_to 'Edit', edit_customer_path(customer) %>

    <%= link_to 'Destroy', customer, method: :delete, data: { confirm: 'Are you sure?' } %>
<% end %>

Railsには複数キーを設定できないので、composite_primary_keysっていうgemを使うといいよ

GitHub→composite_primary_keys

2012年10月3日水曜日

Macでrbenvを使ってRails環境を構築したよ

( ̄(エ) ̄)彡☆

OS X 10.8.2

最近、RailsやらRubyMotionやらPandraやらでgemがぐちゃぐちゃ…

せっかくなのでRVMでなくてrbenvで環境を構築してみまーす

Homebrew
$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

openssl
$ brew install openssl
$ brew link openssl

readline
$ brew install readline
$ brew link readline

rbenv
$ brew install rbenv
$ brew install ruby-build

~/.bash_profile
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Rubyをインストール
$ rbenv install 1.9.3-p194

なんかopensslのエラー出てインストールできないので
$ CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 1.9.3-p194

はー

Ruby1.9.3-p194をデフォに設定
$ rbenv global 1.9.3-p194

bundleをインストール
$ rbenv exec gem install bundle
$ rbenv rehash

rails_projects/myapp/Gemfile
source 'http://rubygems.org'
gem 'rails', '3.2.8'

bundle install
$ cd ./myapp
$ bundle install --path vendor/bundle

Rails apps
$ bundle exec rails new .

Gemfileの上書き確認くるのでYes

Railsコマンドの前に bundle execをつけるの忘れないでねw

これでプロジェクト毎にgemを分けれるのでスッキリ

RubyMotionの場合も
bundle install --path vendor/bundleすればいいのです

2012年10月1日月曜日

Ruby x Agile ~Rubyで作る、アジャイル開発~に参加してきた

( ̄(エ) ̄)彡☆

ATND→Ruby x Agile ~Rubyで作る、アジャイル開発~

複数人での開発はあまり経験がないので参加してきましたー

アドバイザとして株式会社アジャイルウェア代表取締役の川端光義さんが参加

当日の流れはこんな感じヘ(^o^)ノ
  1. チーム分け
  2. 第1イテレーション
  3. もくもく
  4. 成果発表
  5. 第2イテレーション
  6. もくもく
  7. 成果発表
Railsを使ってWebアプリを作りましたー

第2イテレーションでは機能追加がありました

ホントはテストから書くのだろうが…

いきなりコーディング ヽ(`д´;)/  うおおおお!?

なんとか見せられる程度に仕上げました (。・x・)ゝ

第1イテレーションではコードがぐちゃぐちゃでしたが、

第2イテレーション前にヒントをもらい修正しましたm( __ __ )m 

RSpecのテスト→モデル→コントローラー→ビュー

この流れがすごく自然でシンプルですヽ(´ー`)ノ

テストコードを書くときに手が止まってしまう…

慣れが必要ですね!

下記書籍は全部もってるのに…勉強不足です(_ _ )/ハンセイ

アジャイル開発のペアプロとかあるとイイかもヘ(^o^)ノ