我想知道是否有可能有一个语言环境的多个文件,可能在目录中组织并仍然使用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"也会被覆盖),而不是合并键.
或者是否有更好的模式?非常感谢你!
使用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中得到一些关于不存在的关系的错误.
谢谢你的帮助!
我有一个类方法混合到我的所有模型中.在计算模型类时调用该方法.不幸的是(对我来说),只要模型在开发环境中需要,这似乎是按需的.怎么可以让铁轨在启动时加载所有型号?这是否可取?
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的一个动作是"管理",系统需要在启动时意识到这个动作.我认为在模型中是拥有这种逻辑的最自然的地方.
谢谢!