小编Vir*_*ren的帖子

在Rails自定义验证中使用范围

我想在自定义验证中应用范围限制器

我有这个产品模型,它有make,model,serial_number,vin作为属性

现在我有一个自定义验证来检查vin如果vin不存在,以检查数据库中make + model + serial_number唯一性的组合

validate:combination_vin,:if =>"vin.nil?"

def combination_vin 
  if Product.exists?(:make => make,:model => model,:serial_number => serial_number)
      errors.add(:base,"The Combination of 'make+model+serial_number' already present")
  end
end
Run Code Online (Sandbox Code Playgroud)

我想在此验证器中针对user_id引入一个范围

现在我知道我可以轻松地写这个以实现相同的使用

 def combination_vin
    if Product.exists?(:make => make,:model => model,:serial_number => serial_number,:user_id => user_id)
      errors.add(:base,"The Combination of 'make+model+serial_number' already present")
    end
 end
Run Code Online (Sandbox Code Playgroud)

但出于好奇,我想在自定义验证上有一个范围验证器(类似{:scope =>:user_id}),这样我就不必在存在中传递额外的user_id吗?哈希

谢谢

validation ruby-on-rails ruby-on-rails-3 rails-3.1 ruby-on-rails-3.2

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

ssh-add 可以全局添加吗

我可以做的ssh-ADDidentifyFile那相依相偎,目前它仅盛行的当前活动SSH会话(即identityFile当使用新的SSH会话与服务器建立可以通过运行SSH-发现SSH-ADD迷路添加添加 -L )

问题是我们的亚马逊服务器有各种项目,这些项目都在 github 中。

现在回购每个人都有正确的基础上,用户的访问 说,用户右只能访问项目AB对B项目的访问权限

有了这个访问权限集(在 github 中),现在每个用户只能对各自的项目(这是我们想要的)执行 git 操作(如 git fetch、git push 等)

现在我想要的是当用户在各自的项目上执行 git 操作时,我希望ssh-agent获取帐户中的所有 ssh-keys 并查找与该特定用户匹配的那个

笔记

每个 ssh-key 都有一个与之关联的短语(每个用户都知道的唯一秘密),在执行 git 功能时提示输入。

为了实现这一点,我们做

ssh-add /root/.ssh/A
Run Code Online (Sandbox Code Playgroud)

或者

ssh-add /root/.ssh/B
Run Code Online (Sandbox Code Playgroud)

但如前所述,这仅适用于活动的 ssh-session退出或与服务器建立新的ssh 会话 ssh-add 信息丢失。可以通过运行ssh-add -L 找到

我也试过在 .ssh/config 中定义 IdentityFile 就像在这个问题中描述的那样

像这样的东西

Host github.com
        Hostname github.com
        User git
        IdentityFile …
Run Code Online (Sandbox Code Playgroud)

git ssh openssh github ssh-keys

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

使用Pdf.js突出显示pdf内的部分

我目前正在使用pdf.js作为我的项目来渲染pdf现在有一个棘手的任务,在给定坐标的情况下突出显示pdf页面的一部分

给定像[(31,35),(40,35),(40,40),(31,40)]我这样的边界部分应该突出显示给定部分的主要颜色

如何写一个javascript实际使用pdf.js api来完成这个任务

是否有可能或者我是否在探索野心

javascript pdf pdf.js

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

连接两个数据库Mongoid

我有两个数据库,我必须在我的应用程序中使用.我的mongoid.yml中有以下内容:

development:
  # Configure available database sessions. (required)
  sessions:
    # Defines the default session. (required)
    default:
      # Defines the name of the default database that Mongoid can connect to.
      # (required).
      database: db_development
      username: myusername
      password: mypassword
      # Provides the hosts the default session can connect to. Must be an array
      # of host:port pairs. (required)
      hosts:
        - myserverip:27017
      databases:
        secondary:
          database: db2_development
          username: myusername
          password: mypassword
          # Provides the hosts the default session can connect …
Run Code Online (Sandbox Code Playgroud)

querying multiple-databases mongoid ruby-on-rails-3 mongoid3

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

Ruby不释放内存

我有或多或少看起来像这样的Ruby代码

offset = 0
index = 1

User.establish_connection(..) # db1
class Member < ActiveRecord::Base
  self.table_name = 'users'
end 

Member.establish_connection(..) #db2

while true
  users = User.limit(10000).offset(offset).as_json ## for a Database 1
  offset = limit * index
  index += 1
  users.each do |u|
    member =  Member.find_by(name: u[:name])
    if member.nil?
      Member.create(u)
    elsif member.updated_at < u[:updated_at]   
      member.update_attributes(u)   
    end
  end 
  break if break_condition
end
Run Code Online (Sandbox Code Playgroud)

我所看到的是RSS内存(htop)不断增长,并且一度达到10GB.我不确定为什么会发生这种情况但是Ruby似乎永远不会将内存释放回操作系统.

我知道有很多问题都与此相符.我甚至尝试通过代码更改看起来像这样(具体是最后3行).ie GC.start手动运行结果仍然相同.

while true

....
...
...
users = nil
GC.start
break if break_condition
end
Run Code Online (Sandbox Code Playgroud)

关于Ruby版本测试这2.2.22.3.0 …

ruby memory ruby-2.3

5
推荐指数
1
解决办法
621
查看次数

没有找到银杏测试?

我不明白为什么“go”找不到我的 Ginkgo 测试文件

\n

我的结构如下:

\n
events\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 button_not_shown_event.go\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 events_test\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 button_not_shown_event_test.go\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的button_not_shown_event_test.go样子

\n
package events_test\n\nimport (\n    "fmt"\n    . "github.com/onsi/ginkgo"\n    . "github.com/onsi/gomega"\n)\n\nvar _ = Describe("ButtonNotShownEvent", func() {\n  BeforeEach(func() {\n    Expect(false).To(BeTrue())\n  })\n  \n  Context("ButtonNotShownEvent.GET()", func() {\n        It("should not return a JSONify string", func() {\n           Expect(true).To(BeFalse())\n        })\n    })\n})\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,我专门编写了一个测试,因此它会失败。

\n

但是每次运行 Ginkgo 测试时都会出现以下错误

\n
go test ./app/events/events_test/button_not_shown_event_test.go  -v\n\ntesting: warning: no tests to run\nPASS\nok      command-line-arguments  1.027s\n
Run Code Online (Sandbox Code Playgroud)\n

很明显我在这里缺少一些东西。

\n

有什么线索吗?

\n

go ginkgo gomega

5
推荐指数
1
解决办法
6693
查看次数

了解 Stun 工作

我浏览了编程 P2P 应用程序SO 帖子。但我想我仍然不清楚 STUN 是如何在引擎盖下工作的。

所以,我想发表我的理解,并希望得到纠正。

根据示例

假设机器 (A) IP 正在192.168.1.2运行(在 STUN 服务器上的 TCP 客户端请求)4900(TCP 客户端请求 STUN 服务器通过 TCP 运行4900)并且 Stun 服务器返回了 Nat 设备的公共 IP,即128.11.12.13 8888

现在我希望机器 B(假设现在 B 通过公共 IP 知道128.11.12.13)通过端口3000(TCP)连接到机器 A

这之后发生了什么——

B 尝试通过 IP 连接 A 128.11.12.13

问题1:但是哪个端口?(它不能直接连接到端口 3000 )

我想答案是我将4900请求转发到3000.

但这里有一件事

问题 2:连接到 4900 上 STUN 服务器的 TCP 客户端怎么样(发送指示等)。如果应用了端口转发,从 Stun 服务器到 TCP 客户端的所有流量现在都将被重定向到端口 3000。对吗?

我在这方面正确吗?

有什么办法解决这个问题,还是我在这里大声思考?:)

sockets networking p2p tcp stun

5
推荐指数
1
解决办法
1553
查看次数

"data-url"jQuery Mobile令人困惑

任何人都可以更多地了解jQuery Mobile中的"data-url"属性当前我阅读的文档中我发现它太混乱了是否有任何工作演示或其他东西.

请避免复制粘贴jQuery移动网站上的内容它绝对可以帮助其他人在我这样的混淆状态下寻找相同的状态.

mobile jquery data-url jquery-mobile

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

查找是否使用shell脚本安装库

我是shell脚本中的完整noob我想要的是shell脚本,它确定当前安装的库/包列表,如果没有用户权限就不安装它们

我想要的是确定当前是否在系统中安装库/包

我知道aptitude search命令,但我正在寻找更好的解决方案

例如,我已经定义(在shell脚本中)检查readline库/包现在如何从shell脚本(我想创建)内部知道当前安装了readline包.

任何想法或建议肯定会有所帮助

linux shell deb

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

为什么单击链接会转到页面顶部?

这可能听起来很奇怪

我有一个有链接的页面

<a href="#" class="emails" > Email to Friends </a> 
Run Code Online (Sandbox Code Playgroud)

现在我有一个事件附加到锚标记,以便在单击给定div时切换它的状态

Javascript代码看起来像这样

$(document).ready(function() {
    $(".emails").bind("click",function() {
       $("div#container").toggle
   })
})
Run Code Online (Sandbox Code Playgroud)

现在上面的代码和所有的工作正常

但这里有一个大问题

现在,当我点击链接给出了我的页面将焦点移至顶部页面

我必须一直向下滚动才能看到变化

谁可以帮我这个事

javascript anchor javascript-events

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

超过最大插入大小16,000,000字节+ mongoDB + ruby

我有一个应用程序,我使用mongodb作为数据库存储记录我正在使用的mongodb的ruby包装是mongoid

现在一切正常,直到我遇到上述错误

超过最大插入大小16,000,000字节

任何针脚都可以指出如何摆脱错误.

我正在运行一个没有配置文件的mongodb服务器(mongodb源文件没有提供配置)

谁能帮忙

mongodb mongoid

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

Accepts_nested_attributes 导致 Rails 中的堆栈级别太深

我有一个非常基本的例子

应用程序/模型/user.rb

#name string
class User < ActiveRecord::Base
  has_one :project,dependent: :destroy
  validates :name,presence: true
  validates_associated :project
  accepts_nested_attributes_for :project
end
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/project.rb

#name      string
#user_id   integer
class Project < ActiveRecord::Base
  belongs_to :user
  has_many :tasks,dependent: :destroy
  validates :name,presence: true
  validates_associated :tasks
  accepts_nested_attributes_for :tasks
end
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/tasks.rb

#name   string
#project_id  integer
class Task < ActiveRecord::Base
  belongs_to :project,dependent: :destroy
  validates :name,presence: true
end
Run Code Online (Sandbox Code Playgroud)

这就是我模型中的全部内容

在控制器端出于测试目的,我有以下代码。

应用程序/控制器/user_controller.rb

def update
    @user.project_attributes = {:name  => "P#rand(100)",:tasks_attributes => [{name: "Task#{rand(100)}"}]}

    respond_to do |format|
      if @user.save
        format.html { redirect_to …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-4

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