我正在寻找减少模型,控制器和视图的默认代码的方法。
我刚刚创建了一个带有两个字段以及控制器和视图的模型SearchDescription。我需要默认的脚手架索引,显示等。还有rspecs,但同样完全默认。没什么特别的。只是默认值。
但事实证明,我目前正在提交大约20个具有完全默认行为的文件。没什么特别的。
有没有办法在项目中实际生成的代码更少的情况下更清洁,而是“动态生成”?
例如,只需在配置文件中编写以下内容: SearchDescription,field1,field2;与控制器;有意见;与rspecs
按惯例按惯例进行操作而不实际生成文件?
答案 0 :(得分:0)
Rails是关于可读性,约定优于配置以及显示其他自我纪录的代码。虽然......之前我已经以这种方式进行了测试,虽然我们最终使用了相同的功能,并将它们转发到必须存在的文件上,以便让任何人都能清楚地阅读。
规范部分可能如下所示:
require 'spec_helper'
初始化我们可以轻松阅读和操作的' config' -Hash:
objectHash = { 'controller' => 'ClassController',
'object' => 'Class',
'engine' => 'Engine'
}
hash = { "#{objectHash['engine']}::#{objectHash['object'].capitalize}" => objectHash }
hash.each do |key, values|
describe Object.const_get("#{values['engine']}::#{values['controller']}"), :type => :controller do
login_user
before :each do
@object_string = "#{values['engine']}::#{values['object']}"
@object = FactoryGirl.create(Object.const_get(@object_string))
@example_attribute = :objectAttribute
end
这是通常的轨道方式,只是更抽象一点。
context "GET 'index'" do
it "should not be possible to access without permission" do
get :index, { use_route: values['engine'].to_sym }
expect(response).to have_http_status(302)
end
it "should be possible to access with permissions" do
permission_string = "#{values['engine'].downcase}_#{values['object'].underscore.pluralize.downcase}_index"
create_permissions(permission_string, false, true, subject.current_user)
get :index, { use_route: values['engine'].to_sym }
expect(response).to have_http_status(200)
end
end
end
依旧......
正如您可能想象的那样,这种代码真正突破了#34;易于理解"准则,我们都试图遵循。
最后你说你正在为基本功能编写测试?测试你已经意识到功能的东西真的有意义吗?我不确切地知道,但听起来你正在测试基地轨道。