我的webapp已注册用户,它也有文章,博客文章,闲话.对于所有这些资源,我有一个多态的Comment模型,如下所示.
id content commentable_id commentable_type user_id created_at updated_at
1 Frist comment 2 Article 1 ....
2 Second comment 3 Post 2 .....
Run Code Online (Sandbox Code Playgroud)
因此,对于每个可评论资源,我在可评论资源的底部都有一个评论表单供用户评论.我想要一个复选框,在提交评论时检查时,用户应该收到通知,无论是收件箱还是电子邮件,因为我们已经在用户注册时收到通知,之后会添加其他新评论.
我希望有一些像Notifications这样的模型,我可以存储commentable_type,commentable_id和user_id(如果有匹配的commentable和user创建了新的评论,应该向谁发送通知?
如何实现评论和通知之间的关联?对于检查部分,如果有任何一个订阅特定可注释资源,则创建一个带有after_create挂钩的CommentObserver来初始化搜索,并在有任何匹配记录时发送通知.
但我很困惑协会,模型,控制器和视图会是什么样子才能实现这一目标?由于评论模型已经是多态的,我可以将Notification模型创建为多态吗?
我想知道我是否能以某种方式在C++中进行前/后函数调用.我有一个包含很多函数的包装类,在每次包装函数调用之后我应该调用另一个总是相同的函数.
所以我不想把postFunction()调用放到这样的每一个函数中:
class Foo {
f1();
f2();
f3();
.
.
.
fn();
}
void Foo::f1() {
::f1();
postFunction();
}
void Foo::f2() {
::f2();
postFunction();
}
etc.
Run Code Online (Sandbox Code Playgroud)
相反,当我调用一些Foo的成员函数时,我希望自动调用postFunction.可能吗?这将有助于维护..
我相信我在很大程度上理解属性.我的问题是,如果我有一个实例变量的属性,并且我在我的实现文件中的方法中设置或检索它,我应该使用self.myProperty还是只是myProperty?我知道其中一个有效,但我看到了混合约定,有时代码直接访问变量,有时则通过属性访问变量.
这样做有技术原因吗?这只是公约/个人偏好吗?而且我不是指方法的参数名称与实例变量名称冲突的实例,这可能是使用该属性的一个原因(至少,在其他语言中,我不知道这个).我假设当一个人在实现中使用该属性时,他们想要利用他们声明属性的方式(即非原子,保留),所以例如在方法中,人们可以这样做:
self.myProperty = [someObject someAutoReleasedObject];
Run Code Online (Sandbox Code Playgroud)
代替:
myProperty = [[someObject someAutoReleasedObject] retain];
Run Code Online (Sandbox Code Playgroud)
这是什么原因?那么只有某些情况才能使用该物业吗?
我是Objective-C的新手,这是让我困惑的少数事情之一.到目前为止,我刚刚直接访问了实例变量,最可能的错误假设是,通过属性实际调用/发送方法/消息并增加了不必要的开销.我很确定我错了,但即使开销的差异可以忽略不计(如果有的话),为什么只要直接访问变量就可以选择加入?
我很确定我的想法是错的,这就是我在这里问的原因.
我有一个很大的电子邮件地址列表,我需要确定哪些不在我的数据库中.我可以构建一个能告诉我这些信息的查询吗?
我正在使用SQL Server 2000,如果它需要非标准扩展
我的.emacs就像是我的路线图,我在那里获取了很多文件.他们的扩展名是.emacs:例如,
fileName.emacs
Run Code Online (Sandbox Code Playgroud)
问题是只有〜/ .emacs有语法高亮.
我想为所有以.emacs结尾的源文件突出显示语法.
如何将语法高亮显示在所有源.emacs -files上?
我正在为我正在开发的一个小项目添加一些新功能,其中一个是alpha分页,看起来像
#0-9 ABCDE ... XYZ
我可以使用类似的东西轻松地通过他们的第一个字母获取项目
SELECT * FROM ... WHERE name LIKE 'A%' ...
Run Code Online (Sandbox Code Playgroud)
将以数字和所有其他字符开头的所有内容分组有点困难,我认为它必须使用MySQLs REGEXP.
为了清楚起见,我需要帮助创建两个查询,这些查询将获取所有行
在从事C++项目三年后,可执行文件已增长到4 MB.我想看看所有这些空间的去向.有没有一种工具可以报告最大的太空猪是什么?很高兴看到按类(类中的所有函数),模板(所有实例化)和库(多少属于C标准库和STL?exe中的每个库有多少?)的大小.
编辑:注意,我在Windows上使用Visual C++.
我MyClass::myMethod()在另一个DLL上有一个静态方法MyDll.dll.在我的代码中,我调用此方法,它编译并运行正常.
但是当我MyClass::myMethod()在即时窗口(或观察窗口)中尝试时,我总是得到:
MyClass::myMethod()
CXX0052: Error: member function not present
Run Code Online (Sandbox Code Playgroud)
这是为什么?
更新:我发现当我使用上下文运算符时,它可以工作:
{,,MyDLL}MyClass::myMethod()
Run Code Online (Sandbox Code Playgroud)
我不确定为什么需要它,所以我要稍等一下,看看是否有人有一个很好的解释.
更新2:我被要求提供更多信息.不幸的是,我所描述的几乎就是我所拥有的一切.这是第三方代码.该方法驻留在不同的DLL上,声明如下:
class MyClass
{
public:
// ...
_declspec(dllimport) static const char *getDirectory(void);
}
Run Code Online (Sandbox Code Playgroud)
它被调用如下:
MyClass::getDirectory ()
Run Code Online (Sandbox Code Playgroud)
我没有消息来源.它是在VC++ 9下的Debug模式下编译的.
我正在检查反射器中的代码,但我还没有发现它如何通过集合向后枚举?
由于没有计数信息,枚举总是从集合的"开始"开始,对吧?
这是.NET框架中的缺点吗?成本是否高于常规枚举?
我有一组很久以前开发的.NET组件(1.1).我想继续为需要该版本的任何客户端提供1.1版本,但也提供版本 - 在某些情况下为.NET 2和.NET 3(.5)提供相同的代码,在某些情况下还有增强功能.在后面的每种情况下,我可能希望利用平台的新功能来处理某些组件.
我正在寻找有关这种情况下最佳做法的指导.
在我不打算对组件进行任何更改的情况下,我想我仍然可以将其作为1.1提供,以后的库/应用程序可以按原样使用1.1程序集.我怀疑可能仍然有充分的理由提供使用更高版本的.NET构建的程序集 - 例如性能 - 但我的理解是我可以提供1.1.它是否正确?
在我希望保持组件代码的大部分代码与1.1一起使用的情况下,还要为更高版本的.NET添加功能,最好的方法是什么?
此外,任何关于如何处理组装签署的建议将不胜感激.
提前致谢
c++ ×3
.net ×2
c# ×2
function ×2
sql ×2
.net-2.0 ×1
.net-3.5 ×1
collections ×1
comments ×1
conventions ×1
database ×1
debugging ×1
elisp ×1
emacs ×1
linq ×1
mysql ×1
objective-c ×1
profiler ×1
properties ×1
regex ×1
ruby ×1
size ×1
sql-server ×1
visual-c++ ×1