2013-06-25 52 views

回答

0

紅寶石1.9

Status.each do |status| 
    scope status, -> { where(status: status) } 
end 

或以前版本的Ruby

試試這個
Status.each do |status| 
    scope status, lambda { where(status: status) } 
end 

- 編輯 -

我猜你的問題是在其他地方,因爲這個代碼工作對我來說:

class Agency < ActiveRecord::Base 
    attr_accessible :logo, :name 
    validate :name, presence: true, uniqueness: true 

    NAMES = %w(john matt david) 
    NAMES.each do |name| 
    scope name, -> { where(name: name) } 
    end 
end 

我可以創建新模型就好,並使用示波器

irb(main):003:0> Agency.new 
=> #<Agency id: nil, name: nil, logo: nil, created_at: nil, updated_at: nil> 
irb(main):004:0> Agency.matt 
    Agency Load (0.5ms) SELECT "agencies".* FROM "agencies" WHERE "agencies"."name" = 'matt' 
=> [] 
irb(main):005:0> Agency.john 
    Agency Load (0.3ms) SELECT "agencies".* FROM "agencies" WHERE "agencies"."name" = 'john' 
=> [] 
irb(main):006:0> Agency.david 
    Agency Load (0.3ms) SELECT "agencies".* FROM "agencies" WHERE "agencies"."name" = 'david' 
=> [] 
+0

我試過了。同樣的結果。順便說一句,我應該提到我在Ruby 2.0上。 –

+0

我已更新我的答案! –

+0

感謝您花時間嘗試複製並強制我更深入地觀察。巨大的呃。 **其中一個狀態是「新」。**是的。順便說一句,使用lambda或不是無關緊要。 –