1
也許我忽略了一些明顯的東西,但我試圖將一個實際的場景應用到這個殭屍教程的rails上。關係查找誤解
--------問題------------ 假設模型和關係被正確定義,找到所有屬於殭屍'灰'的武器。
class Zombie < ActiveRecord::Base
has_many :weapons
end
class Weapon < ActiveRecord::Base
belongs_to :zombie
end
教程接受答案OF-
z = Zombie.find(1)
[#<Zombie id: 1, name: "Ash", graveyard: "Glen Haven Memorial Cemetery">]
z.weapons
[#<Weapon id: 1, name: "Hammer", strength: 1, zombie_id: 1>]
但對我來說不是那麼實用,因爲如果我工作的項目和類型的問題上來我會做到這一點。
ash = Zombie.where(:name => "Ash")
[#<Zombie id: 1, name: "Ash", graveyard: "Glen Haven Memorial Cemetery">]
但
ash.weapons
使輸出
#<NoMethodError: undefined method `weapons' for #<ActiveRecord::Relation:0x00000016334738>>
這怎麼可能當輸出查找殭屍是完全一樣的,我發現殭屍的方式是更考慮到問題的框架(即使他們提供數據庫表)的實際情況。這可能是Codechool交互式控制檯的細微差別,還是我錯過了一些東西?
感謝您的關注。
我還是不確定我是否理解,因爲兩個陣列都被直接「加強」起來,但是對武器調用的反應卻不同。我想我的一個更大的問題是,我能否在實踐中使用我認爲是實際的呼叫? –
當你發現(1)它會返回一個資源。哪裏會返回一個活躍的記錄關係。如果你在這兩種情況下都做了ash.class,你會發現它們是兩種不同的東西 –