2014-09-30 70 views
0

我該怎麼做select:「選擇日期,triggerid,嚴重性,狀態,types.name,收件人從日誌,類型WHERE logs.type_id = types.id;」? 我有talble日誌列'type_id'包含(1,2,2,3,3,1 ...),我需要做的SQL選擇是:(電子郵件,短信,短信,語音,語音,電子郵件.. 。)其中表 「類型」 conains ID(1,2,3),姓名(電子郵件,短信,語音)rails select activerecord我不明白

遷移:

create_table :logs, id: false do |t| 
    t.integer   :date,   unsigned: true 
    t.integer   :triggerid,  unsigned: true 
    t.integer   :severity,  unsigned: true 
    t.integer   :status,  unsigned: true 
    t.integer   :type_id,  unsigned: true 
    t.string   :recipient,  limit: 100 

    create_table :types do |t| 
    t.string  :name,  limit: 7 
end 
+0

我認爲這個遷移定義是無效的紅寶石。 – 2014-09-30 06:41:31

+0

什麼應該是遷移獲得結果? – 2014-09-30 06:47:25

+0

那會是什麼結果? – 2014-09-30 06:50:17

回答

0

1.遷移:

1.1。 LogsTable

class CreateLogs < ActiveRecord::Migration 

     def change 
     create_table :logs do |t| 
      t.integer   :date,   unsigned: true 
      t.integer   :triggerid,  unsigned: true 
      t.integer   :severity,  unsigned: true 
      t.integer   :status,  unsigned: true 
      t.integer   :type_id,  unsigned: true 
      t.string   :recipient,  limit: 100 
      t.references  :type 
      t.timestamps 
     end 
     end 
    end 

TypesTable:

class CreateTypes < ActiveRecord::Migration 

    def change 
    create_table :types do |t| 
     t.string  :name,  limit: 7 

     t.timestamps 
    end 
    end 
end 

1.3。 rake db:migrate

2.型號:

class Log < ActiveRecord::Base 
    belongs_to :type 
end 

class Type < ActiveRecord::Base 
    has_many :logs #or has_one, I don't know your app logic 
end 

現在您可以選擇通過它的 「TYPE_ID」 日誌的實例。

+0

對於愚蠢的問題抱歉,應該查詢選擇列「引用:類型」? – 2014-09-30 07:12:17

+0

如果你用你想要實現的應用程序的邏輯描述來編輯/更新你的問題(英文,而不是SQL),那將是很好的,因爲坦率地說,我不明白。 – RedZagogulin 2014-09-30 07:33:49

+0

不幸的是我的英語比sql差),通常我有talble日誌,其中的列「type_id」包含(1,2,2,3,3,1 ...),必須是:(電子郵件,短信,短信,語音,語音,電子郵件...)其中表「類型」conains id(1,2,3),名稱(電子郵件,短信,語音) – 2014-09-30 07:52:59