如果我使用迁移来更新数据库,我添加一个整数字段,如下所示:
t.integer :foo :default => 0, :null => false
Run Code Online (Sandbox Code Playgroud)
数据库中现有记录和新记录的默认状态是什么?我希望答案是: - 两者都会将foo读回为0.
是默认=> 0,如果我有:null => false?
只是想了解两者之间的区别......
如果我有一个可能包含任何字符的字符串(包括'/','&'等等),如何将其安全地转换为可以像这样存储的XML:
<myelement>mystring</myelement>
Run Code Online (Sandbox Code Playgroud)
它需要是CDATA,还是可以使用ruby函数轻松转换它?
我有一个模型:
has_and_belongs_to_many :users
Run Code Online (Sandbox Code Playgroud)
如何验证模型在模型中至少有一个用户?我试过了:
validates_presence_of :users
Run Code Online (Sandbox Code Playgroud)
但这似乎没有给我我想要的东西......
我正在尝试在Heroku上创建一个临时分支,但有些东西我不太了解.
假设我已经创建了一个heroku应用程序并将远程设置为指向staging-remote,如果我这样做:
git checkout -b staging staging-remote/master
Run Code Online (Sandbox Code Playgroud)
我得到一个名为'staging'的本地分支,它跟踪staging-remote/master - 或者这就是我的想法....
但:
git remote show staging-remote
Run Code Online (Sandbox Code Playgroud)
给我这个:
remote staging
Fetch URL: git@heroku.com:myappname.git
Push URL: git@heroku.com:myappname.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
staging-remote merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,拉动看起来合理,但默认推动没有.这意味着,如果我这样做:
git push staging-remote
我要将我的本地主分支推送到临时分支.但这不是我想要的......基本上,我想将更新合并到我的临时分支,然后轻松将其推送到heroku,而不必像这样指定分支:
git push staging-remote mybranch:master
Run Code Online (Sandbox Code Playgroud)
以上并不难做到,但我想避免意外地执行上一次推送并推错分支......这对于我想创建的生产分支来说非常重要!
我已经尝试搞乱git配置,但还没弄明白如何做到这一点......
在我的rails应用程序中,我有两个与has_and_belongs_to_many相关的模型.这意味着有一个连接表.
想象一下我在游戏中添加用户的场景.如果我想添加用户,我会:
@game.users << @user
Run Code Online (Sandbox Code Playgroud)
假设我想知道我添加这些用户的顺序.我可以做这个:
@game.users.each do....
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如果此列表保证每次都以相同的方式读取,是否排序?
如果是这样的话,那么在游戏中重新排序用户的干净方法是什么?
我一直在玩使用HTTP POST调用我的rails控制器.我可以使用curl命令来实现它,给定一个名为item的模型和名为name的项目中的属性:
curl -X POST -d "<item><name>myname</name></item>" -H "Content-Type: text/xml" http://localhost:3000/items.xml
Run Code Online (Sandbox Code Playgroud)
我很好奇的是如何使用文本而不是xml作为我的内容类型进行相同的调用....我试过:
curl -X POST -d "name=myname" http://localhost:3000/items.xml
Run Code Online (Sandbox Code Playgroud)
但这似乎将'name'参数作为顶级范围传递; 所以它不会最终出现在控制器的参数中....
我是个菜鸟; 只是想了解如何以两种方式做到这一点....
谢谢!
我的ActiveRecord模型中有以下行:
class Record < ActiveRecord::Base
has_many :users, :through => :record_users, :uniq => true, :order => "record_users.index ASC"
Run Code Online (Sandbox Code Playgroud)
这是为了使我能够以我使用record_users模型中的索引字段订购的方式读出record.users.
问题是PostgreSQL上的这个失败,出现以下错误:
ActionView::TemplateError (PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
Run Code Online (Sandbox Code Playgroud)
有没有办法修复声明使它工作?
我已经添加了一个SSL证书(来自godaddy,但也尝试过rapidssl)到一个网站.
Safari和IE都可以浏览到https://并报告证书有效,没有任何警告.但是,如果我尝试从iPhone浏览到相同的地址,则会收到无效的证书错误.我正在使用heroku作为相关网站的主机.
有人见过这个吗?我很难过为什么2个不同的iphone会做不到这个,但桌面浏览器就好了......
我之前使用过has_and_belongs_to_many,并已转换为has_many:through.以下是它如何查找可以让很多用户玩的游戏列表.有了这个,我可以做game.users和user.games ....:
class Game < ActiveRecord::Base
has_many :game_users, :dependent => :destroy
has_many :users, :through => :game_users, :uniq => true
end
class User < ActiveRecord::Base
has_many :game_users, :dependent => :destroy
has_many :games, :through => :game_users, :uniq => true
end
class GameUser < ActiveRecord::Base
belongs_to :game
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
我的连接表的数据库迁移:
create_table :game_users, :id => false do |t|
t.column :game_id, :integer
t.column :user_id, :integer
t.column :player_index, :integer
end
Run Code Online (Sandbox Code Playgroud)
我不太确定我得到了这一切,请帮我查一下我的事实:
依赖=>:destroy是否正确?如果游戏或用户被销毁,我希望删除'game_users'连接表条目 - 但我不希望删除用户如果删除游戏,反之亦然......?
uniq字段应该表示游戏仅包含唯一用户,并且用户仅包含唯一游戏.那是对的吗?
像以前一样进行数据库迁移:id => false.这仍然是正确的做法吗?我试图在控制台中摧毁一个游戏,并对丢失的内容进行投诉......所以我猜不到并试图理解为什么.
我发现rails活动记录关联非常混乱.我想他们不应该是!
我想使用子树合并将远程项目拉入我自己的git树中的目录.我按照这里的说明操作: 使用子树合并
但我不知道如何签出标签.我想这是一个常见的请求 - 您想要引入一个外部项目,但获得一个安全的标记版本的源代码.子树合并解决方案效果很好,但我不知道如何获得我想要的标签?喜欢git,但有时会伤到我的头......