目前分類:未分類文章 (5)

瀏覽方式: 標題列表 簡短摘要

舉例一個很常見的狀況,如果要找匿名文章的話,會下

@posts = Post.where("user_id IS NULL")

這可以等義於以下這種寫法,而且也比較推薦這樣寫,因為是使用 ruby 的格式而不像是 sql command 的格式。

@posts = Post.where(:user_id => nil)

 

但是,如果要找的是排除匿名使用者的所有文章呢? 會用到 sql 的 NOT NULL

Post.where("user_id IS NOT NULL")

很可惜我本來想找出 ruby 格式的寫法,但沒找到,除非裝 meta where gem,有興趣使用的可以參考下面這篇文章

http://stackoverflow.com/questions/4252349/rail-3-where-condition-using-not-null

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

2011/06/06更新: 後來看到有 whitespace-tmbundle ,裝完之後只要 cmd+s 就會自動清除行末空白以及將 tab 換成 space 。

whitespace-tmbundle

===

用 textmate 的話,可以開 Find in Project (熱鍵: shift+cmd+f)

先把 Regular expression 這個選項打勾,再到 Find 的欄位輸入 [ \t]+$ ,Replace 欄位保持空白。

先點 Find 按鈕讓 textmate 去找,然後再點 Replace All ,最後當然要記得做 Save All (熱鍵: alt+cmd+s)。

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

如果你有在 layout 中使用 CSS cache,會發現有時候 local 開發正常但 deploy 出去畫面卻大跑版。這很可能是因為 CSS 沒寫好使得 rails 幫忙 merge 時造成衝突而跑版,亦或是 css cache 後的名稱與你的 css 檔案重複而造成衝突。

要在 local 解 bug ,得把以下這行設定打開,就會讓 local 端也產生一樣的 css cache 檔案。

在 layout

<%= stylesheet_link_tag "reset.css", "common-use.css", :cache => "cache-application" %>

在 config/environments/development.rb

config.action_controller.perform_caching = true

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

rvm 本身就有提供配套的 openssl ,但是我的 macbook with OSX 10.5 不知為何會有問題,因此改成先用 brew 安裝 openssl ,再在 install ree 時下參數指定目錄。

brew install openssl
rvm package install readline
rvm install ree --with-openssl-dir=/usr/local/Cellar/openssl/0.9.8o --with-readline-dir=$rvm_path/usr

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

Rails 3 有使用 lazy loading ,因此預設並不會載入 lib/ 目錄(跟rails 2不同),但有進 load_path 所以可以正常的 require 。

想要自動載入可以在 config/application.rb 內加入這行:

config.autoload_paths += %W( #{config.root}/app/lib )

參考文件:

Rails3 自動載入
Rails 3 RC 公告
Commit - the autoload issue
http://stackoverflow.com/questions/3356742/best-way-to-load-module-class-from-lib-folder-in-rails-3
http://www.hemju.com/2010/09/22/rails-3-quicktip-autoload-lib-directory-including-all-subdirectories/

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()