2012/04/07

削除されたものも検索したい時 「unscoped」を使う

論理削除とか使ってたりするときね

class Diary < ActiveRecord::Base
  # 論理削除
  default_scope where(:deleted_at => nil)


削除されたものも検索したい時 「unscoped」を使う
  # いつもの検索 deleted_at is null がSQLに付く
  Diary.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")
  # 削除あり検索
  Diary.unscoped.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")

ActiveRecordオブジェクトを そのままハッシュに入れたい時

 ActiveRecord(AR)オブジェクトは
各オブジェクトごとの値を attributes っていうHashで保持しているらしい

  user = User.find_by_user_id(params[:user_id])
  logger.debug(user.to_yaml)#←中身デバッグ

・DEBUGは↓こんな感じ
[DEBUG] --- !ruby/object:User
attributes:
  id: '1'
  name: username
  deleted_at: !!null 
  created_at: '2012-04-07 03:32:09'
  updated_at: '2012-04-07 13:41:55'
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false


attributesは
1件しかないARオブジェクトだったら
→ user.attributes

複数取れるARオブジェクトだったら
(プライマリキーで取得できる件数が必ず1件だったとしても find(:all 〜 とかで取得するとこっちになると思われ)
→ user[0..N].attributes

MacOSで アプリケーションごとに入力言語を保つ

MBA使い始めて 何がうざいって
ターミナル使ってて テキスト編集で日本語入力して、
また、ターミナルへ戻ったら
なぜかターミナルも日本語入力状態になってること

というか、Macでは入力言語の切り替えが なぜか全てのアプリで共通になるんだよね
これがデフォルトだなんて なんなんですかいったい
使いにくくてしょうがなくて やっと対処法を見つけた

システム環境設定 → 言語とテキスト → 入力ソース
 ・入力ソースのオプション
  → 書類ごとに異なるものを使用 に、チェック

やっとすっきりしたー!




参考)
http://blog.stack-style.org/2009-09-26-03/Mac%20OS%20Xメモ:アプリケーションごとに入力ソースの状態を切り替える