小编cma*_*han的帖子

怎么做:默认=> 0和:null => false对于迁移中的整数字段有何不同?

如果我使用迁移来更新数据库,我添加一个整数字段,如下所示:

t.integer :foo :default => 0, :null => false
Run Code Online (Sandbox Code Playgroud)

数据库中现有记录和新记录的默认状态是什么?我希望答案是: - 两者都会将foo读回为0.

是默认=> 0,如果我有:null => false?

只是想了解两者之间的区别......

migration null default ruby-on-rails

47
推荐指数
1
解决办法
4万
查看次数

在ruby中将任意字符串转换为xml

如果我有一个可能包含任何字符的字符串(包括'/','&'等等),如何将其安全地转换为可以像这样存储的XML:

<myelement>mystring</myelement>
Run Code Online (Sandbox Code Playgroud)

它需要是CDATA,还是可以使用ruby函数轻松转换它?

ruby xml string

25
推荐指数
3
解决办法
1万
查看次数

在has_and_belongs_to_many中验证至少一个

我有一个模型:

has_and_belongs_to_many :users
Run Code Online (Sandbox Code Playgroud)

如何验证模型在模型中至少有一个用户?我试过了:

validates_presence_of :users
Run Code Online (Sandbox Code Playgroud)

但这似乎没有给我我想要的东西......

activerecord model ruby-on-rails

23
推荐指数
2
解决办法
9639
查看次数

Git将当前分支推送到Heroku的远程分支

我正在尝试在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配置,但还没弄明白如何做到这一点......

git production heroku staging

15
推荐指数
2
解决办法
1万
查看次数

订购has_and_belongs_to_many关联

在我的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)

我的问题是:

  1. 如果此列表保证每次都以相同的方式读取,是否排序?

  2. 如果是这样的话,那么在游戏中重新排序用户的干净方法是什么?

ruby-on-rails has-and-belongs-to-many rails-activerecord

9
推荐指数
2
解决办法
5400
查看次数

HTML帖子中的嵌套模型参数

我一直在玩使用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'参数作为顶级范围传递; 所以它不会最终出现在控制器的参数中....

我是个菜鸟; 只是想了解如何以两种方式做到这一点....

谢谢!

rest curl ruby-on-rails http

8
推荐指数
1
解决办法
5042
查看次数

PostgreSQL,Rails和:order =>问题

我的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)

有没有办法修复声明使它工作?

postgresql activerecord ruby-on-rails has-many

7
推荐指数
1
解决办法
3477
查看次数

iPhone上的SSL问题

我已经添加了一个SSL证书(来自godaddy,但也尝试过rapidssl)到一个网站.

Safari和IE都可以浏览到https://并报告证书有效,没有任何警告.但是,如果我尝试从iPhone浏览到相同的地址,则会收到无效的证书错误.我正在使用heroku作为相关网站的主机.

有人见过这个吗?我很难过为什么2个不同的iphone会做不到这个,但桌面浏览器就好了......

iphone ssl https

7
推荐指数
2
解决办法
1万
查看次数

has_many:通过问题

我之前使用过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)

我不太确定我得到了这一切,请帮我查一下我的事实:

  1. 依赖=>:destroy是否正确?如果游戏或用户被销毁,我希望删除'game_users'连接表条目 - 但我不希望删除用户如果删除游戏,反之亦然......?

  2. uniq字段应该表示游戏仅包含唯一用户,并且用户仅包含唯一游戏.那是对的吗?

  3. 像以前一样进行数据库迁移:id => false.这仍然是正确的做法吗?我试图在控制台中摧毁一个游戏,并对丢失的内容进行投诉......所以我猜不到并试图理解为什么.

我发现rails活动记录关联非常混乱.我想他们不应该是!

activerecord ruby-on-rails has-many-through

6
推荐指数
1
解决办法
3792
查看次数

Git子树标签

我想使用子树合并将远程项目拉入我自己的git树中的目录.我按照这里的说明操作: 使用子树合并

但我不知道如何签出标签.我想这是一个常见的请求 - 您想要引入一个外部项目,但获得一个安全的标记版本的源代码.子树合并解决方案效果很好,但我不知道如何获得我想要的标签?喜欢git,但有时会伤到我的头......

tags git subtree

6
推荐指数
1
解决办法
3952
查看次数