Archive for ActiveRecord

[ActiveRecord]Dynamic attribute-based finders

說明:(節錄至ActiveRecord::Base)
Dynamic attribute-based finders are a cleaner way of getting (and/or creating) objects by simple queries without turning to SQL.

用法:

可以簡單利用 find_by_xxx or find_all_by_xxx 來取得資料(xxx => column name)
ex: Person.find_by_user_name(user_name)

也可使用複數的條件(and/or)來取得資料
ex: Person.find_by_user_name_and_password(user_name, password)

最最最好用的就是這個功能,先判斷資料是否存在,若存在回傳此筆資料,若不存在 create 這筆資料
ex:
# No 'Summer' tag exists
Tag.find_or_create_by_name("Summer") # equal to Tag.create(:name => "Summer")
# Now the 'Summer' tag does exist
Tag.find_or_create_by_name("Summer") # equal to Tag.find_by_name("Summer")

或是不想直接 create 只是先初始化一個新的物件的話
ex:
# No 'Winter' tag exists
winter = Tag.find_or_initialize_by_name("Winter")
winter.new_record? # true

這些finders實在是方便,故特別記一筆以免忘記~

留言數(1)

如何在寫一般 Ruby Code 時使用 Rails 的 ActiveRecord 存取 Database

require "rubygems"
require_gem "activerecord"
require "active_record"

ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "hostname",
:database => "yourdb",
:username => "dbuser",
:password => "dbuserpw"
)

class MyTable < ActiveRecord::Base
end

這樣就可以在一般 Ruby Code 中使用 ActiveRecord 的 CRUD (Create, Read, Update, Delete) 存取你的 Database 了.

Update: 2007-03-16

因為 require_gem 已經被廢除了,所以改用 require ‘active_record’ 代替

另外,從 Lighty RoR 最簡潔有力的網頁框架: 在 Rails 之外使用 ActiveRecord 這篇中發現,還可以利用設定 config 的方式將 ActiveRecord 的設定寫在 code 外

想知道詳細用法可至上述網頁看看 :)

張貼留言