注意:此问题的公式试图模拟应用程序的时间演变。因此,每个上下文都是前一个上下文的演变,也就是在添加了字段/功能的迭代之后
=== TIME 0中的背景
User
模型的应用程序。此模型有一个名为info
info
打算存储密钥['name', 'first_surname', 'phone']
。此外,还使用store_accessor :name, :first_surname, :phone
。 (这会在表格中呈现用户表格的每个字段,包括info
hstore列中的所有字段。)
Reference:"PROFILE SHOW"
#app/views/users/profile.html.erb
<h3>Profile</h3>
<table class="table table-striped">
<tbody>
<tr><th>Email</th><th><%=current_user.email%></th></tr>
<% unless current_user.info.nil? %>
<% current_user.info.each do |key,val| %>
<tr>
<th><%=key.gsub('_',' ').titleize%></th>
<th><%=val%></th>
</tr>
<% end %>
<% end %>
</tbody>
</table>
=== TIME 1中的背景
city
,province
,passport
。info
的{{1}}列中。User
),因此用户可以填写它们。 问题:在上下文 TIME 0 期间,如何修改代码“PROFILE SHOW”,使其与前10个创建的city,province,passport
一起使用。以这种方式呈现页面
User
即。上下文 TIME 0 期间|province | |
|city | |
|passport | |
中不存在的字段中的空格。
换句话说:如何跟踪info
列中的“潜在”字段,即其他实例中存在但不存在于您的字段中的字段。
这是可取,因为我也想在EDIT页面中展示它们,因此用户可以填写以前不存在的字段。
到目前为止我的方法:
hstore
谢谢!
答案 0 :(得分:1)
如何跟踪hstore列中的“潜在”字段,即存在于其他实例中但不存在于您的字段中的字段
没有直接的方法,因为hstore
只是一个键/值存储作为字段值。它与任何其他hstore
值无关。
如果您希望定义已知密钥的列表,您的应用程序必须使用可能密钥的边表维护其自身,可以是单个行,也可以是单个hstore
字段,每个键都指向一个虚拟密钥占位符价值。我推荐单独的行以获得更好的并发性。