extend vs include
* extend - class level
* include - instance level
require vs require_dependency
require_dependency wiki
require 是 ruby 的, require_dependency 是rails 的, 在development mode 時, 每個request 都會在load 一下
2009年2月2日 星期一
2008年12月17日 星期三
join,include
mysql, 是沒有include 這種東西的
在rails 下join 如
rails 用join 就是用inner join 弄成一整個大的object, association 就沒了
用include 有的時候因為條件裡直接需要用到另個table 的條件, 是用left join 但仍維持 association 的關係
另外rails 2.2 可以把 join 寫的high 一點了
Easy Join Table Conditions
在rails 下join 如
rails 用join 就是用inner join 弄成一整個大的object, association 就沒了
用include 有的時候因為條件裡直接需要用到另個table 的條件, 是用left join 但仍維持 association 的關係
另外rails 2.2 可以把 join 寫的high 一點了
Easy Join Table Conditions
join,include
mysql, 是沒有include 這種東西的
在rails 下join 如
rails 用join 就是用inner join 弄成一整個大的object, association 就沒了
用include 有的時候因為條件裡直接需要用到另個table 的條件, 是用left join 但仍維持 association 的關係
另外rails 2.2 可以把 join 寫的high 一點了
Easy Join Table Conditions
在rails 下join 如
rails 用join 就是用inner join 弄成一整個大的object, association 就沒了
用include 有的時候因為條件裡直接需要用到另個table 的條件, 是用left join 但仍維持 association 的關係
另外rails 2.2 可以把 join 寫的high 一點了
Easy Join Table Conditions
2008年9月18日 星期四
include, map
user 拿全部的x_alerts
[model]
belongs_to :user
has_many :x_alerts, :extend => XAlert::AssociationMethods, :through => :x_alert_relationships
has_many :x_alert_relationships
a = u.alert_targets.find(:all, :include => {:x_alert_relationships => :x_alert} )
AlertTarget Load (0.000180) SELECT * FROM `alert_targets` WHERE (`alert_targets`.user_id = 2590)
XAlertRelationship Load (0.000152) SELECT `x_alert_relationships`.* FROM `x_alert_relationships` WHERE (`x_alert_relationships`.alert_target_id IN (1,2,10,11))
XAlert Load (0.000212) SELECT * FROM `x_alerts` WHERE (`x_alerts`.id IN ('6','216','7','8','250','229','218','241','197','214','104','5'))
a.map {|e| xar = e.x_alert_relationships; xar.map { |k| h = k.x_alert; h[:cat] = k.created_at; h}}.flatten
2008年9月1日 星期一
model, include, left outer join
>>User.find(:all, :include => 'profile')
User Load (0.000682) SELECT * FROM `users`
Profile Load (0.000492) SELECT `profiles`.* FROM `profiles` WHERE (`profiles`.user_id IN (1,2,4,5))
Profile Columns (0.000880) SHOW FIELDS FROM `profiles`
>> User.find(:all, :include => 'profile', :conditions => "users.name is not NULL")
User Load (0.000731) SELECT * FROM `users` WHERE (users.name is not NULL)
Profile Load (0.000183) SELECT `profiles`.* FROM `profiles` WHERE (`profiles`.user_id IN (1,2,4,5))
User.find(:all, :include => 'profile', :conditions => "profiles.others is NULL")
User Load Including Associations (0.001349) SELECT `users`.`id` AS t0_r0, `users`.`name` AS t0_r1, `users`.
`password_salt` AS t0_r2, `users`.`password_hash` AS t0_r3, `users`.`email` AS t0_r4, `users`.`created_at` AS t
0_r5, `users`.`cookie_hash` AS t0_r6, `users`.`target_time_now` AS t0_r7, `users`.`reset_password_code` AS t0_r
8, `users`.`reset_password_code_until` AS t0_r9, `users`.`yahoo_userhash` AS t0_r10, `users`.`group_id` AS t0_r
11, `users`.`group_nickname` AS t0_r12, `users`.`time_zone` AS t0_r13, `profiles`.`id` AS t1_r0, `profiles`.`user_id` AS t1_r1, `profiles`.`others` AS t1_r2, `profiles`.`sex` AS t1_r3, `profiles`.`birth` AS t1_r4, `profiles`.`star` AS t1_r5, `profiles`.`blood` AS t1_r6, `profiles`.`address` AS t1_r7, `profiles`.`school` AS t1_r8, `profiles`.`job` AS t1_r9, `profiles`.`interest` AS t1_r10, `profiles`.`photo` AS t1_r11, `profiles`.`connect` AS t1_r12, `profiles`.`email_weekly` AS t1_r13 FROM `users` LEFT OUTER JOIN `profiles` ON profiles.user_id = users.id WHERE (profiles.others is NULL)
訂閱:
文章 (Atom)