我有一个Rails 4应用,其中模型Vehicle
有一个名为data
的hstore列。该应用还使用了gem 'acts_as_tenant'
。模型Tenant
还有一个名为data
的hstore列。
我正在做的是在Tenant for Vehicle表中存储用户定义的字段。换句话说,如果租户数据(hstore)列包含'color',那么我希望每个Vehicle在其数据(hstore)列中具有相同的密钥。
这是车辆表格的代码:
<% if current_tenant.data.present? %>
<%= f.simple_fields_for :data do |d| %>
<% current_tenant.data.each do |key, value| unless ???????@vehicle.data%>
<div class="row">
<p class='col-md-3'>
<%= text_field_tag key, key, :class => 'text_field dynamicAttributeName' %>
</p>
<p class='col-md-3'>
<%= d.text_field key, :class => 'text_field', :value => value %>
</p>
<p class='col-md-1'>
<a herf='#' class='btn removeRow'>X</a>
</p>
</div>
<% end %>
<%- end -%>
<% end %>
<% if @vehicle.data.present? %>
<%= f.simple_fields_for :data do |d| %>
<% @vehicle.data.each do |key, value| %>
<div class="row">
<p class='col-md-3'>
<%= text_field_tag key, key, :class => 'text_field dynamicAttributeName' %>
</p>
<p class='col-md-3'>
<%= d.text_field key, :class => 'text_field', :value => value %>
</p>
<p class='col-md-1'>
<a herf='#' class='btn removeRow'>X</a>
</p>
</div>
<% end %>
<%- end -%>
<% end %>
我的问题是第<% current_tenant.data.each do |key, value| unless ???????
行
我不想两次添加相同的密钥。因此,如果Vehicle数据字段已经有color
,我不想再添加它。
如何测试Vehicle.data字段以查看其密钥是否等于current_tenant.data.each do |key, value|
。
感谢您的帮助!!!
答案 0 :(得分:0)
在核心,通过store_accessor :data
在Rails模型上定义的hstore列就像哈希一样,如您所见。
您可以进行简单的检查,看看vehicle.data
哈希是否具有您要查找的密钥。
类似的东西:
current_tenant.data.each do |key, value|
puts "#{key} => #{value}" unless vehicle.data.key?(key)
end
将打印键值对,除非车辆hstore列也具有相同的键