2014-03-29 36 views
0

在rails中有沒有辦法從沒有任何模型的表中檢索值?我已經創建了一個表item_types,其中的item_id是其他表項的主鍵。項目表中的每個項目可以有3個或4個item_types。這裏我想用一個特定的item_id來顯示一個item的相應item_types。我們只是在一個變量@ item.id中有一個特定項目的item_id我試圖組成一個sql查詢,但我不知道如何在沒有模型的情況下實現它。此外,我不確定以下查詢中的「item_id = @ item.id」部分是否正確。Rails:從沒有模型的表中檢索值

select * from item_types where item_id = @item.id 
+0

但是,爲什麼你不爲此創建模型,是否有任何理由呢? –

+0

@Bharatsoni不,如果那是一個愚蠢的問題,我很抱歉。創建表後,我正在考慮從該表中檢索值。如果我們不能在沒有模型的情況下做到這一點,那麼請您建議我如何爲現有表創建模型? – liya

+2

(rails g model item_type --skip-migration)該命令將爲您創建一個模型,這裏跳過遷移不會生成遷移文件,因爲您的數據庫中已經有了一個表。 –

回答

0

什麼你看是join_model,這既可以用has_and_belongs_to_many使用,或has_many :through關係

我不知道你想達到什麼樣的,但我會強烈建議採用在自主車型一has_many :through協會:

#app/models/type.rb 
Class Type < ActiveRecord::Base 
    has_many :item_types 
    has_many :items, through: :item_types 
end 

#app/models/item.rb 
Class Item < ActiveRecord::Base 
    has_many :item_types 
    has_many :types, through: :item_types 
end 

#app/models/item_type.rb 
Class Type < ActiveRecord::Base 
    belongs_to :item 
    belongs_to :type 
end 

這將允許您調用join_model通過你的其他車型,像這樣:

@item = Item.find(params[:id]) 
@item.item_types #-> calls SQL "select * from item_types where item_id = @item.id" 

這是正確的Rails方式來做到這一點。 HABTM不使用模型; HMT呢。你應該生成一個模型使用@Bharat Soni's評論&使用我的代碼段訪問它

+0

但我的疑問是爲什麼我們需要另一個模型'type.rb'?創建模型item_type.rb後,我們只需要在models/item.type中提及'belongs_to:item'和models/item.rb中的'has_many:item_types'?然後我使用了語句'@item_types = ItemType.where(「item_id =#{@ item.id}」)。order(「name ASC」)'。這對我有效。 – liya

+0

那麼你的問題的答案是在另一個問題 - >「類型」存儲在哪裏? –