2014-09-30 88 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