我有2个csv文件,第一个包含数千个区域名称/ ID配对,即
public class MiTag extends SimpleTagSupport {
private String titulo;
@Override
public void doTag() throws JspException {
JspWriter out = getJspContext().getOut();
try {
out.println("<h3>"+titulo+"</h3>");
out.println(" <blockquote>");
JspFragment f = getJspBody();
if (f != null) {
f.invoke(out);
}
out.println(" </blockquote>");
} catch (java.io.IOException ex) {
throw new JspException("Error in MiTag tag", ex);
}
}
/**
* @param titulo the Titulo to set
*/
public void setTitulo(String titulo) {
this.titulo = titulo;
}
}
等...
第二个包含有关这些区域的数据,唯一标识符是ID而不是名称(因为名称在area_name中不是唯一的)。
ID, area_name
1, "New York"
2, "New Jersey"
我会将第一个csv摄取到postgres一次,它永远不会改变,但我会每隔几周左右获得第二个csv的新行,我将用它将数据插入到数据库中。
我的问题是 - 在我的数据库中存储所有这些内容的最佳方法是什么,因为我需要向用户显示区域名称,但是当他们选择一个区域时,需要使用area_id查询数据库并且有数千个他们。
提前致谢!
答案 0 :(得分:0)
最好将第一个csv存储在名为Area
的表中,并将has_one关系发送到第二个模型(例如,AreaDetails)。然后,您可以通过第一个表查询第二个表。
class Area < ActiveRecord::Base
has_one :area_detail, dependent: :destroy
end
class AreaDetails < ActiveRecord::Base
belongs_to :area
end
现在,您可以通过运行以下方式获取ID为1的area_details:
Area.find(1).area_detail
我假设您在数据进入时删除了第二个表数据。如果您要保留数据并需要全部显示,那么您应该使用has_many
而不是has_one
。< / p>