有没有很好的方法来检索迁移版本号?
我需要在模型中实现一个方法,该方法在特定迁移版本之外的行为方式不同.
我发现连接适配器中的assume_migrated_upto_version正在从数据库中检索版本但无法找到其他版本.
背景:我正在尝试从表A中删除两列,想要将它们移动到表B中,并从表A中添加与表B的关联.
在此更改期间,我需要访问这两列.但在那之后,我想为这些列添加代理方法以实现兼容性.
在实现一些辅助方法时,有时,我想将一些计算结果存储在辅助方法可以作为缓存访问的地方.
如果我将它存储到实例变量中,它将污染实例,因此这样做似乎不明智.
有存储这种价值的好地方吗?或者在帮手中做这么重的计算是个坏主意?
解决问题=>查看最后的更新
我正在尝试使用,std::function
但看起来只是包含<functional>
不提供定义.我试图编译以下代码:
#include <functional>
std::function<int(int)> f = nullptr;
Run Code Online (Sandbox Code Playgroud)
使用c ++ 11作为编译选项:
% clang++ -c -std=c++11 t.cc
Run Code Online (Sandbox Code Playgroud)
原因:
t.cc:3:6: error: no type named 'function' in namespace 'std'
std::function<int(int)> f = nullptr;
~~~~~^
t.cc:3:14: error: expected unqualified-id
std::function<int(int)> f = nullptr;
^
2 errors generated.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?我知道C++很好,但对clang ++/C++ 11来说是新手,因此我认为我缺乏重要的知识.
我在MacOS X 10.8上使用clang ++.
更新1
我在cppreference.com网站上尝试了一个示例,但它也不会编译.提供一些选择解决问题?
更新2
尝试从cppreference.com上面的示例clang++ -c -std=c++11 -stdlib=libc++11 x.cc
,编译器仍然说:
x.cc:1:10: fatal error: 'functional' file not found
#include <functional>
^
1 error …
Run Code Online (Sandbox Code Playgroud) [这是" 如何模块化Rails模型? " 的后续问题
反正有没有在app/models
Rails目录中组织类?我是否必须为所有类使用单个顶级命名空间?
最初的动机是,我希望把它不从继承业务逻辑类ActiveRecord::Base
进入app/models
目录.搜索此站点会显示许多建议将业务逻辑类放在app/models
目录中的答案.我发布了一个不同的问题,并得到了建议,可以将这些类放入lib
目录.
现在我很好奇.我想将这些类放在apps/models
其他人推荐的目录中的不同命名空间和目录中.可能吗?
实际上,我试验了一下,但在我看来,这不是预期的铁轨.如果我创建这样的类(如some_mod_name/class_in_mod.rb中的SomeModName :: ClassInMod),则不会加载它.另外,我在模块中定义了常量.由于它们没有装载,我不能使用它们.实际上,rspec
它的工作没有问题,但有rails server
,该类没有加载.我确定它与自动加载问题有关.
除了上面提到的类之外,从中继承的类ActiveRecord::Base
可以放在一些名称空间中module
.我很好奇这项工作是否合适.
换句话说,问题是:我可以通过配置要加载的这些文件来使轨道高兴,还是不是rails设计的方式?