小编jan*_*hii的帖子

Rails I18n多个文件别名

我想知道是否有可能有一个语言环境的多个文件,可能在目录中组织并仍然使用YAML别名,例如:

在一个公共文件中:

# config/locales/common/en.yml
en:
  first_name: &first_name "First name"
  last_name: &last_name "Last name"
Run Code Online (Sandbox Code Playgroud)

并在一个更具体的文件中:

# config/locales/models/user/en.yml
en:
  helpers:
    label:
      user:
        first_name: *first_name
        last_name: *last_name
Run Code Online (Sandbox Code Playgroud)

这有助于最大限度地减少翻译和翻译的变化.在我的rails配置中,我将其设置为加载子目录中的所有语言环境文件.此设置对我不起作用,我加载页面时出现错误的别名错误.

我尝试使用一个init脚本将所有en.yml编译成一个并只使用那个文件,别名可以正常工作,但我不能将键合并.例如,如果我在其他文件中有另一个"助手",它只使用最后指定的内容(实际上,"en"也会被覆盖),而不是合并键.

或者是否有更好的模式?非常感谢你!

yaml locale ruby-on-rails internationalization

14
推荐指数
3
解决办法
9568
查看次数

如何在没有关联数据库表的情况下RSpec共享ActiveRecord模块?

使用RSpec 2.6/Rails 3.1/Postgres:

我正在编写一个支持模块(在我的lib /中),任何AR模型都可以包含.我想为这个模块编写规范.它需要包含在AR :: Base模型中,因为它在包含时加载关联并依赖于某些AR方法,但我不想在为此模块编写rspec时使用我现有的模型.

我只想创建一个任意的AR模型,但显然它不会在数据库中关联一个表,而AR正在死亡.这是我想要做的事情:

class SomeRandomModel < ActiveRecord::Base
  include MyModule

  # simulate DB attributes that MyModule would be using
  attr_accessor :foo, :bar, :baz 
end

describe SomeRandomModel do
  it '#some_method_in_my_module' do
    srm = SomeRandomModel.new(:foo => 1)
    srm.some_method_in_my_module.should eq(something)
  end
end
Run Code Online (Sandbox Code Playgroud)

当然,我在postgres中得到一些关于不存在的关系的错误.

谢谢你的帮助!

activerecord rspec ruby-on-rails

14
推荐指数
2
解决办法
2868
查看次数

Rails 3在启动时加载所有模型

我有一个类方法混合到我的所有模型中.在计算模型类时调用该方法.不幸的是(对我来说),只要模型在开发环境中需要,这似乎是按需的.怎么可以让铁轨在启动时加载所有型号?这是否可取?

class Foo < ActiveRecord::Base
  include Acl
  register_acl # i need this to be called for all models at start up
end
Run Code Online (Sandbox Code Playgroud)

基本上,register_acl采用模型希望访问控制的"动作"的一些参数.假设Foo的一个动作是"管理",系统需要在启动时意识到这个动作.我认为在模型中是拥有这种逻辑的最自然的地方.

谢谢!

ruby-on-rails

12
推荐指数
2
解决办法
5057
查看次数