rails g model Article name:string
rails g model Category name:string
rails g model Tag name:string taggable_id:integer taggable_type:string category_id:integer
Run Code Online (Sandbox Code Playgroud)
我已经创建了我的模型,如上面的代码所示.文章将是许多可以有标签的模型之一.类别模型将包含可能分配的所有类别.标记模型将是一个多态连接表,表示标记的关系.
class Article < ActiveRecord::Base
has_many :tags, :as => :taggable
has_many :categories, :through => :taggable
end
class Category < ActiveRecord::Base
has_many :tags, :as => :taggable
has_many :articles, :through => :taggable
end
class Tag < ActiveRecord::Base
belongs_to :taggable, :polymorphic => true
belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)
我似乎无法让它工作,我可以做非多态,但我必须有多态的部分.有任何想法吗?
编辑:仍然没有做到这一点:
class Article < ActiveRecord::Base
has_many :taggables, :as => :tag
has_many :categories, :through => :taggables, :source => :tag, …
Run Code Online (Sandbox Code Playgroud) 我是否应该更喜欢在堆栈或堆上初始化我的主要小部件,我有点困惑.在"使用QT 4进行C++ GUI编程"中,主要小部件在堆栈上初始化.在我说更多之前,我会解释我的意思:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
现在,也许这只是因为它更安全,也许是因为他们不想让读者混淆QT中的内存分配.对从QObject继承的对象留下任何删除肯定会让读者"忘记"使用QT对象进行内存管理.但是,我的问题是,我们应该更喜欢这种方法,还是以下方法:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow* mainWin = new MainWindow;
mainWin->show();
int execReturn = app.exec();
delete mainWin;
return execReturn;
}
Run Code Online (Sandbox Code Playgroud)
我提出这个问题的主要原因是我通常更愿意遵循选择堆与堆栈的模式:
现在,我想我的问题归结为两个问题:
我意识到QWidget本身不太可能导致堆栈溢出,但当然这将是我的应用程序可能具有的任何其他堆栈使用之上.
我正在努力寻找有关新Rails 3资产管道的任何真实文档.我知道有一个视频,但我不希望以这种格式观看一小时的视频.我看了大约10分钟,没有获得任何知识.
那么,我需要了解有关Rails 3资产管道的哪些信息?这对我之前的项目意味着什么,这对我未来的项目意味着什么?
我不知道我做错了什么.我尝试运行'rails c',但它只是给了我一个错误.它在10分钟前工作.:\
C:/Ruby192/lib/ruby/1.9.1/psych.rb:148:in `parse': couldn't parse YAML at line 2
column 12 (Psych::SyntaxError)
from C:/Ruby192/lib/ruby/1.9.1/psych.rb:148:in `parse_stream'
from C:/Ruby192/lib/ruby/1.9.1/psych.rb:119:in `parse'
from C:/Ruby192/lib/ruby/1.9.1/psych.rb:106:in `load'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/applic
ation/configuration.rb:88:in `database_configuration'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.7/lib/active_r
ecord/railtie.rb:58:in `block (2 levels) in <class:Railtie>'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_
support/lazy_load_hooks.rb:36:in `instance_eval'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_
support/lazy_load_hooks.rb:36:in `execute_hook'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_
support/lazy_load_hooks.rb:43:in `block in run_load_hooks'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_
support/lazy_load_hooks.rb:42:in `each'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.7/lib/active_
support/lazy_load_hooks.rb:42:in `run_load_hooks'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.7/lib/active_r
ecord/base.rb:1904:in `<top (required)>'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.7/lib/active_r
ecord/railtie.rb:32:in `block in <class:Railtie>'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/railti
e.rb:180:in `call'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/railti
e.rb:180:in `each'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/railti
e.rb:180:in `load_console'
from …
Run Code Online (Sandbox Code Playgroud) 我想知道Qt在使用QPainter的drawRect时是如何做边框的.原因是我试图绘制三个相邻的矩形,但我无法让它们在所有笔尺寸上完美地触摸.
我有两个分支,一个是主,一个是'测试'.这个名字是双重目的,我不仅测试分支机构,还测试了一些变化.现在,我让测试分支工作得很好.但是,我不是一个人工作.主分支也在进行中.现在,我想将我的测试分支复制到主要部分.然后,我想做一个拉动,看看已经做了哪些改变,所以我可以推动改变.
首先,我正在使用Aptana.我尝试了下拉设置按钮.我点击并尝试在Master分支上与'test'分支合并.这样做了,不确定是什么.然后说我有问题.所以,现在,我运行git mergetool,再次,这做了一些事情.它说一切都很好.现在,两个分支都正常工作,但是,它们并不相同.事实上,它们正是在任何合并发生之前它们的确是如此.
我该怎么做才能解决这个问题?'test'是现在的重要分支,它完成了我所有的工作.师父有一些重要的东西,但不是本地的.任何建议都会很棒.
无关信息: 我正在尝试使用Qt构建应用程序.此应用程序具有QMdiArea和子窗口.我的儿童窗口将有一个菜单,可以集成到QMdiArea或隔离并附加到孩子本身.虽然,这比需要的更详细一点......
问题: 我希望我的子窗口小部件有一个带有快捷方式的菜单,"CTRL + W".但是,因为我使用的是QMdiArea,所以已使用快捷方式导致:
QAction :: eventFilter:模糊的快捷方式重载:Ctrl + W.
我怎样才能摆脱这个快捷方式并在我的子窗口小部件中声明它?
更新: 这是我没有运气的尝试:
class MDI : public QMdiArea
{
Q_OBJECT
private:
bool event(QEvent *tEvent)
{
if (tEvent->type() == QEvent::KeyPress)
{
QKeyEvent* ke = static_cast<QKeyEvent*>(tEvent);
if (ke->key()== Qt::Key_W && ke->modifiers() & Qt::ControlModifier)
emit KeyCW();
return true;
}
return QMdiArea::event(tEvent);
}
public:
signals:
void KeyCW();
};
Run Code Online (Sandbox Code Playgroud)
这工作,如果我做的改变简单的东西Qt::Key_W
来 Qt::Key_L.
的关键,组合体被接收的事件被抛出.有了W,它就永远不会发生.我也尝试过移动event
到QMainWindow以及子窗口中的eventFilter到QMdiArea.似乎做一些简单的事情就像从QMdiArea中删除默认的键处理程序一样简单.
我希望将值传递给自定义验证.我做了以下测试:
validate :print_out, :parameter1 => 'Hello'
有了这个:
def print_out (input="blank")
puts input
end
Run Code Online (Sandbox Code Playgroud)
创建对象或保存对象时,输出为"空白".但是,如果直接调用:
object.print_out "Test"
而是输出测试.问题是,为什么我的参数没有正确传递?
以下代码创建一个表,并使用数据填充数据库.当运行下面的代码,我收到一个错误'Parameter count mismatch'
上query.exec()
.但是,如果我使用注释行代码,一切正常.我如何滥用准备功能?
QSqlQuery query;
if (query.exec("CREATE TABLE Users ( u_ID INT IDENTITY(1,1) PRIMARY KEY, cName varchar(25) UNIQUE )"))
{
for (int i=1;i<=100;++i)
{
QString uName;
uName = "user" + QString::number(i);
query.prepare("INSERT INTO Users (cName) VALUES(':UNAME')");
query.bindValue(":UNAME",uName);
query.exec();
//query.exec("INSERT INTO Users (cName) VALUES('" + uName + "')");
if (query.lastError().isValid()){
QMessageBox::information(0,"ERR!",query.lastError().text());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找Visual Basic或VBA的解释器(编译器也可以).我不是在寻找任何类型的UI支持.基本上,我有一系列有点复杂的VBA模块,它们不引用任何外部DLL并且不使用任何用户界面.有没有这样的工具可用于Windows操作系统的Microsoft Office或Microsoft Visual Basic?
我用QStringListModel创建了一个QListView.
listModel = new QStringListModel(ui->listView);
ui->listView->setModel(listModel);
ui->listView->setEditTriggers(QListView::NoEditTriggers);
ui->listView->setDragDropMode(QListView::InternalMove);
Run Code Online (Sandbox Code Playgroud)
我使用以下方法添加项目:
void MainWindow::addItem(QString result)
{
if (result == "")
return;
listModel->insertRow(listModel->rowCount());
QModelIndex a = listModel->index(listModel->rowCount()-1);
listModel->setData(a,result);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当您拖动列表中的项目并尝试将其移动到另一个位置时,它更喜欢覆盖您拖动它的项目.我不希望通过拖放操作删除项目.