多个Active Record模型的

时间:2016-03-31 14:07:53

标签: ruby-on-rails activerecord yaml rails-i18n

我有几个相关但又不同的AR模型,它们包含代表同一条数据的属性。当我为这些属性设置翻译时,我现在将它们设置为......

en:
  activerecord:
    attributes:
      model_a:
        assigned_date: "Assigned to worker"
      model_b:
        assigned_date: "Assigned to worker"
      [ ... ]

有没有办法以某种通配符方式定义此翻译一次

我认为最有道理的方法......

en:
  activerecord:
    attributes:
      assigned_date: "Assigned to worker"
      model_a:
        [ model-specific translations here ]

不起作用,因为AR显然在attributes

下方的层级上寻找模型名称

2 个答案:

答案 0 :(得分:3)

公共属性可以升级到一级并在需要时被覆盖

en:
    attributes:
        first_name: Name
    activerecord:
        attributes:
            user:
                email: Email
            admin:
                first_name: First Name

答案 1 :(得分:0)

是的,您可以定义“节点锚点”并稍后引用它们。此外,您可以使用不同的值重新定义“节点锚点”部分中定义的属性,这是您的要求。

使用如下:

en:
  activerecord:
    defaults: &defaults
      assigned_date: "Assigned to worker"
    attributes:
      model_a:
        <<: *defaults
        assigned_date: Model specific translation

在这种情况下,您定义节点锚&defaults并在model_a中引用它们。然后,在assigned_date下覆盖model_a的值。因此,model_a.assigned_date为您提供“特定于模型的翻译”。如果assigned_datemodel_a重新定义model_a.assigned_date<?php define("DB_HOST", "localhost"); define("DB_USER", "root"); define("DB_PASSWORD", ""); define("DB_DATABASE", "StageReady"); $myConnection = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD, DB_DATABASE) or die ("could not connect to mysql"); $sqlCommand="SELECT id, content FROM voteofthanks "; $posts = array(); $result=mysqli_query($myConnection, $sqlCommand) or die(mysql_error()); while($row=mysqli_fetch_array($result)) { $title=$row['id']; $url=$row['content']; $posts[] = array('id'=> $title, 'content'=> $url); } $fp = fopen('results.json', 'w'); fwrite($fp, json_encode($posts)); fclose($fp); ?> 会给您“分配给工作人员”。