访问对象属性Rails 4

时间:2016-08-19 08:55:10

标签: ruby-on-rails activerecord

我有一个数组arr = ["model", "engine", "year", ................],其中每个元素都是Car模型的属性名称 我试图将这些特定的属性值推送到另一个数组

Car.all.each do |mycar|
  another_array << arr.map{ |attr| mycar.attr }
end

这当然会给出预期的no method error .attr for <object>。这样做的正确方法是什么? 的修改 我知道.send()方法,但我发现当使用.send()时,使用attr-encrypted gem加密的某些字段无法正确解密。所以我必须尝试其他类似的东西

2 个答案:

答案 0 :(得分:2)

你不需要任何特定的Rails / ActiveRecord。

如果您确定属性是“安全的”(即用户无法插入列表,或者您之前验证了方法名称),则可以使用ruby的send:< / p>

mycar.send(attr) # dangerous
mycar.public_send(attr) # a bit less dangerous. Keep reading for the correct solution..

ActiveRecord确实为此提供了一个快捷方式(但会检查你):

mycar[attr]

答案 1 :(得分:0)

您可以使用 getActionBar().setTitle(null);

function curaareacityShortcode() {
$terms = get_terms('property_area'); 
$cura_city = get_terms('property_city'); 
if ( !empty( $terms ) && !is_wp_error( $terms ) ){ 

echo '<ul>'; 
echo $cura_city;

foreach ( $terms as $term ) { 
 $term = sanitize_term( $term, 'property_area' ); 
 $term_link = get_term_link( $term, 'property_area' ); 

  echo '<li><i class="fa fa-map-marker" style="padding-right:15px"></i><a   href="' . esc_url( $term_link ) . '">' . $term->name . '&nbsp;(' . $term->count . ')' . '</a></li>'; 
} 
echo '</ul>';
}

}