查询 SQlite 生成的模型数据库并返回匹配的查询结果?

Query a SQlite generated model database and returning matched query results?

抱歉这个菜鸟问题,我对 RoR 有一些经验。为了快速了解背景,我想制作一个网站,将氨基酸转换成它们匹配的 mRNA 密码子。我需要一个固定的、不可变的 64 行 3 列数据库。基本上,我想要的是用户将字符串输入文本区域并将字符串分成 3 个字符串片段 "ttcttaatt..." --> (dnaCodon) [ttc][tta][att] --> 那匹配数据库 returning 匹配结果 (mrnaCodon) [uuc] [uua] [auu]。

我现在的问题是,我不想让用户看到这个数据库,所以它都包含在后端。我已经将我的数据库制作为模型,所以它是隐藏的。如何查询数据库为模型,然后进行模式匹配?

这是迁移文件

class CreateAaDataBases < ActiveRecord::Migration
  def change
   create_table :aa_data_bases do |t|
  t.string :aaFullName
  t.string :dnaCodon
  t.string :mrnaCodon

  t.timestamps
  end
 end
end

这是我在seeds.rb文件

中创建和迁移的数据库
AaDataBases.create(aaFullName: "phenylalanine", dnaCodon:"ttt", mrnaCodon:"uuu")
AaDataBases.create(aaFullName: "phenylalanine",dnaCodon:"ttc",mrnaCodon:"uuc")
AaDataBases.create(aaFullName: "leucine", dnaCodon:"tta", mrnaCodon:"uua")
AaDataBases.create(aaFullName: "leucine", dnaCodon:"ttg", mrnaCodon:"uug")
AaDataBases.create(aaFullName: "leucine", dnaCodon:"ctt", mrnaCodon:"cuu")
AaDataBases.create(aaFullName: "leucine", dnaCodon:"ctc", mrnaCodon:"cuc")
AaDataBases.create(aaFullName: "leucine", dnaCodon:"cta", mrnaCodon:"cua")
AaDataBases.create(aaFullName: "leucine", dnaCodon:"ctg", mrnaCodon:"cug")
AaDataBases.create(aaFullName: "isoleucine", dnaCodon:"att", mrnaCodon:"auu")
AaDataBases.create(aaFullName: "isoleucine", dnaCodon:"atc", mrnaCodon:"auc")

还有另外 54 个条目以这种方式继续。

这是我的 AaDataBases 模型文件,我还没有添加任何东西。

class AaDataBases < ActiveRecord::Base
end

这是一个用于查询和 returning 序列的静态页面视图,在评论建议后尝试了这个,并从模型中删除了代码。一个简单的测试,看看是否可以访问数据库和 return 匹配值。

<% provide(:title, 'Sequence Results') %>
     <h1>Sequence Results</h1>

    <%= AaDataBases.where(dnaCodon: 'atc').each do |mrna| 
       puts mrna.aaFullName, mrna.mrnaCodon 
     end %>

测试输出此页面视图。 [AaDataBases id: 10, aaFullName: "isoleucine", dnaCodon: "atc", mrnaCodon: "auc", created_at: "2015-04-05 15:57:47", updated_at: "2015-04-05 15:57:47"]

您可以像这样使用哈希进行精确匹配。 || 之间的单词 mnra是后面的块的参数,你可以自己命名。这里代表的是数据库查询的结果,所以代表的是对象形式的记录。数据库字段成为对象的成员。我建议你看一下关于 Activerecord 的教程,比如 this 来自 Rails 本身的教程。

AaDataBases.where(mrnaCodon: 'auc').each do |mrna|
  puts mnra.aaFullName, mnra.mnraCodon
end

或者如果你的意思是我匹配一个小丑你可以这样做

AaDataBases.where('mnraCodon like _u_').each do |mrna|
 ..
end

AaDataBases.where('mnraCodon like %u%').each do |mrna|
 ..
end

编辑

像这样将字符串切成碎片很容易

string = "uuuuucttauuattguug"
p string.scan(/.{3}/)

给予

["uuu", "uuc", "tta", "uua", "ttg", "uug"]