我有一些模型需要在其上放置自定义查找条件.例如,如果我有一个Contact模型,每次调用Contact.find时,我想限制返回的仅属于正在使用的Account的联系人.
我通过谷歌找到了这个(我已经定制了一点):
def self.find(*args)
with_scope(:find => { :conditions => "account_id = #{$account.id}" }) do
super(*args)
end
end
Run Code Online (Sandbox Code Playgroud)
这很有效,除了少数几个account_id不明确的情况,所以我把它改编成:
def self.find(*args)
with_scope(:find => { :conditions => "#{self.to_s.downcase.pluralize}.account_id = #{$account.id}" }) do
super(*args)
end
end
Run Code Online (Sandbox Code Playgroud)
这也很好,但是,我希望它是干的.现在我有一些不同的模型,我希望使用这种功能.做这个的最好方式是什么?
当你回答时,请包含代码,以帮助我们的思想掌握元编程Ruby-fu.
(我正在使用Rails v2.1)
通常,程序员编写生成其他代码的代码.
(技术术语是元编程,但它比仅仅交叉编译器更常见;考虑生成HTML或每个XSLT文件的每个PHP网页.)
一个领域,我觉得挑战性的未来与技术,以确保这两个手写的源文件,以及计算机生成的对象文件明确缩进来帮助调试.这两个目标似乎经常相互竞争.
我发现这在PHP/HTML组合中特别具有挑战性.我认为这是因为:
你用什么技术来解决这个问题?
我当然有时会生成代码而不考虑缩进(尤其是SQL).
但是,有一些论点推动了另一种方式:
例如,考虑代码:
<div class="foo">
<?php
$fooHeader();
$fooBody();
$fooFooter();
?>
</div>
Run Code Online (Sandbox Code Playgroud)
它比以下代码更清晰:
<div class="foo"><?php
$fooHeader();
$fooBody();
$fooFooter();
?></div>
Run Code Online (Sandbox Code Playgroud)
但是,由于HTML中包含的空格,它也有不同的渲染.
在使用C++项目时的解决方案资源管理器中,有标题文件,资源文件和源文件的标准过滤器.我想要完成的主要是按文件夹过滤.
让我们说文件的结构是这样的:
在解决方案资源管理器中,它看起来像:
我希望看起来像这样:
这将如何实现?
c++ visual-studio-2008 visual-studio visual-c++ solution-explorer
我想做的是使用Detours库将WinSock2 send()和recv()函数(数据包记录器)连接到应用程序中。
尽管它确实适用于send()函数,但不适用于recv()函数。
这是我的相关代码:
#include <cstdio>
#include <ctime>
#include <fstream>
#include <iomanip>
#include <string>
#include <windows.h>
#include <detours.h>
#pragma comment( lib, "Ws2_32.lib" )
#pragma comment( lib, "detours.lib" )
#pragma comment( lib, "detoured.lib" )
#pragma comment( lib, "Mswsock.lib" )
std::ofstream Logger;
std::string NowToString() {
time_t rawtime;
tm *timeinfo = new tm();
char buffer[32];
time( &rawtime );
localtime_s( timeinfo, &rawtime );
strftime( buffer, 32, "%m/%d/%Y %I:%M:%S %p", timeinfo );
delete timeinfo;
return std::string( buffer );
}
std::string TimeToString() {
time_t …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可用于处理音频文件的库.基本上我想做的是:
加载MP3/WAV文件
获取该文件的15秒剪辑
覆盖其上的另一个MP3/WAV文件
渲染为新的MP3/WAV文件
我是Ruby的新手,所以我在理解我遇到的这个奇怪的异常问题时遇到了一些麻烦.我正在使用ruby-aaws gem访问Amazon ECS:http://www.caliban.org/ruby/ruby-aws/.这定义了一个类Amazon :: AWS:错误:
module Amazon
module AWS
# All dynamically generated exceptions occur within this namespace.
#
module Error
# An exception generator class.
#
class AWSError
attr_reader :exception
def initialize(xml)
err_class = xml.elements['Code'].text.sub( /^AWS.*\./, '' )
err_msg = xml.elements['Message'].text
unless Amazon::AWS::Error.const_defined?( err_class )
Amazon::AWS::Error.const_set( err_class,
Class.new( StandardError ) )
end
ex_class = Amazon::AWS::Error.const_get( err_class )
@exception = ex_class.new( err_msg )
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
这意味着如果你得到一个类似的错误代码AWS.InvalidParameterValue,这将产生(在它的异常变量中)一个新类Amazon::AWS::Error::InvalidParameterValue,它是一个子类StandardError.
现在这里变得奇怪了.我有一些看起来像这样的代码: …
我试图通过从"测试驱动开发:通过示例"重写Kent Beck的xUnit Python示例来改进我的Ruby.我已经走得很远了,但是现在我运行的时候出现了以下错误.
C:\Documents and Settings\aharmel\My Documents\My Workspace\TDD_Book\TDDBook_xUnit_RubyVersion\lib\main.rb:21:in `test_running': wrong number of arguments (0 for 2) (ArgumentError)
from C:\Documents and Settings\aharmel\My Documents\My Workspace\TDD_Book\TDDBook_xUnit_RubyVersion\lib\main.rb:21:in `run'
from C:\Documents and Settings\aharmel\My Documents\My Workspace\TDD_Book\TDDBook_xUnit_RubyVersion\lib\main.rb:85
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
class TestCase
def initialize(name)
puts "1. inside TestCase.initialise: @name: #{name}"
@name = name
end
def set_up
# No implementation (but present to be overridden in WasRun)
end
def run
self.set_up
self.send @name # <<<<<<<<<<<<<<<<<<<<<<<<<= ERROR HERE!!!!!!
end
end
class WasRun < TestCase
attr_accessor :wasRun
attr_accessor :wasSetUp
def initialize(name)
super(name) …Run Code Online (Sandbox Code Playgroud) 根据我的经验,元模板真的很有趣(当你的编译器符合要求时),并且可以提供良好的性能提升,幸运的是我被经验丰富的C++程序员所包围,这些程序员也会使用元模板,但偶尔会有新的开发人员到来并且可以'使我们使用的一些元模板技巧的头部或尾部(主要是Andrei Alenxandrescu的东西),持续几周,直到他适当地启动.
所以我想知道其他C++程序员的情况是什么?元模板编程应该是C++程序员应该"必须"知道的(当然不包括入门级学生)吗?
编辑:注意我的问题与生产代码有关,而不是很少的样品或原型
考虑以下模板模板参数的使用......
#include <iostream>
template <typename X>
class A
{
X _t;
public:
A(X t)
:_t(t)
{
}
X GetValue()
{
return _t;
}
};
template <typename T, template <typename T> class C >
class B
{
C<T> _c;
public:
B(T t)
:_c(t)
{
}
T GetValue()
{
return _c.GetValue();
}
};
using namespace std;
int main()
{
B<int, A> b(10);
cout<<b.GetValue();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以删除模板参数T?例如,是否有办法进行以下工作?
//Does not compile
template <template <typename T> class C >
class B
{
C _c; …Run Code Online (Sandbox Code Playgroud) 我的大部分应用程序都是用PHP编写的(前端和后端).有一部分工作太慢,我需要重写它,可能不是用PHP.什么会给我以下内容:
1.速度最快
2.最快的发展
3.易于维护.
我在脑海中将CPP中的这段代码重写为PHP扩展,但可能是我被锁定在这个解决方案上而错过了一些更简单/更好的解决方案?
每次运行时,算法都是几个MB数据上的PorterStemmerAlgorithm.
c++ ×6
ruby ×3
php ×2
activerecord ×1
audio ×1
detours ×1
exception ×1
hook ×1
overriding ×1
recv ×1
templates ×1
visual-c++ ×1
winsock ×1
xunit ×1