小编Cim*_*imm的帖子

Rails 3:验证组合值

在Rails 2.x中,您可以使用验证来确保您具有如下所示的唯一组合值:

validates_uniqueness_of :husband, :scope => :wife
Run Code Online (Sandbox Code Playgroud)

在相应的迁移中,它可能如下所示:

add_index :family, [:husband, :wife], :unique => true
Run Code Online (Sandbox Code Playgroud)

这将确保丈夫/妻子组合在数据库中是唯一的.现在,在Rails 3中,验证语法发生了变化,范围属性似乎消失了.它现在看起来像:

validates :husband, :presence => true
Run Code Online (Sandbox Code Playgroud)

知道如何在Rails 3中实现组合验证吗?Rails 2.x验证仍然可以在Rails 3中使用,所以我仍然可以使用第一个示例,但它看起来很"旧",有更好的方法吗?

validation ruby-on-rails database-integrity validates-uniqueness-of ruby-on-rails-3

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

Capybara的HTTP基本身份验证

我正在为我的Rails 3应用程序编写一些RSpec测试,并尝试从Webrat切换到Capybara.到目前为止这么好,但应用程序使用HTTP基本身份验证来授权我的管理员用户,任何想法如何与Capybara测试?

这是我目前的Webrat步骤:

it 'should authenticate for admin' do
  basic_auth('user', 'secret')
  visit '/admin'
  response.status.should eql 200
  response.status.should_not eql 401
end
Run Code Online (Sandbox Code Playgroud)

我如何与Capybara一起做这个?谢谢!

authentication testing ruby-on-rails webrat capybara

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

将mime类型添加到HTML链接

我知道如何更改Web服务器中的MIME类型.我使用它来确保浏览器下载我的.scrpt文件而不是打开纯文本版本.到目前为止这么好但是有可能通过链接做同样的事情吗?我想链接到GitHub上的文件,但这将打开为纯文本文件.我可以在链接中添加"MIME类型属性"以告诉浏览器下载文件吗?

这是我想看到的:

<a mimetype="application/octet-stream" href="http://gist.github.com/raw/279094/39d5a2c1037288d5ee0ba1a17dca9edb368bbe42/RepairiPhotoDates.scpt">download</a>
Run Code Online (Sandbox Code Playgroud)

html mime stream href hyperlink

31
推荐指数
2
解决办法
5万
查看次数

何时在Rails中调用"require"?

我在Rails中有一个更概念性的问题......或Ruby:

最好在需要它的方法之前调用require,在Rails启动时将我的需要分组在类的开头或初始化器的某个地方?

从性能的角度来看是否重要?从可读性的角度来看?如果我使用Rails 3会有所不同吗?

谢谢!

ruby ruby-on-rails

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

渲染Backbone.js集合

我是一个Backbone.js n00b,并试图绕过它.我知道如何使用视图和内置的underscore.js模板引擎渲染模型.现在我正在尝试渲染一个集合,这就是我被卡住的地方.这里没有服务器,所以我不是远程获取任何东西,只是一个带有一些JavaScript的简单HTML页面.

ContinentModel = Backbone.Model.extend({});

ContinentsCollection = Backbone.Collection.extend({
  model: ContinentModel,

  initialize: function () {
    this.continentsView = new ContinentsView;
    this.bind("reset", this.continentsView.render);
  }
});

ContinentsView = Backbone.View.extend({
  el: '#continents',
  template: _.template($('#continents-template').html()),

  render: function() {
    var renderedContent = this.template(this.collection.toJSON());
    $(this.el).html(renderedContent);
    return this;
  }
});

$(function() {
  var continentsCollection = new ContinentsCollection();
  continentsCollection.reset([{name: "Asia"}, {name: "Africa"}]);
});
Run Code Online (Sandbox Code Playgroud)

它打破了视图中的模板属性行,但我不确定这是我需要查看的位置.我应该渲染一个集合,还是我完全忽略了这一点(也许集合只是将对象分组,我不应该把它看成可以渲染的列表)?

谢谢你的帮助......

collections render backbone.js

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

Rails 3.1中的供应商CSS样式表和资产管道

我使用Twitter Bootstrap(不重要但它是第三方 CSS文件).因为它是第三方CSS"库",它应该进入/vendor/assets/stylesheets.到现在为止还挺好.

现在,我想在生产中使用Rails 3.1(.1)资产管道连接一个application.css中的所有CSS,这就是我遇到的问题.

当我运行rake assets:precompile它时,就像宣传的一样.Rake任务在public/assets带有摘要的所有文件夹中创建一些application.css文件.问题是这个文件只包含我的CSS文件中的CSS,/app/assets/stylesheets并完全忽略了我的供应商资产文件夹中的CSS .

有谁知道我在这里想念的内容以及如何告诉Rails将供应商样式表与应用程序一起连接起来?此外,仅包括:

<%= stylesheet_link_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

在视图中(因为我希望最终所有内容都在一个文件中)或者我应该包含每个CSS文件?

precompile ruby-on-rails-3.1 asset-pipeline

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

Rails为应用程序中的每个URL添加参数

我想在我的Rails 2.3.10应用程序中为每个 URL 添加一个参数.我玩了default_url_options但我希望参数在URL中可见.就像是:

http://<server>/posts?token=XYZ
Run Code Online (Sandbox Code Playgroud)

我正在构建一个支持跟踪系统,我希望人们可以共享该链接,并能够在有人点击它时跟踪谁的链接被使用(为分享该链接的人提供点数).有关如何在应用程序中使用的每个 URL中添加可见参数的任何提示?

谢谢!

parameters url tracking ruby-on-rails affiliate

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

Sidekiq在工作中重试计数

有没有办法获得当前工作的重试次数?

x重试后,我希望工作停止,而不是崩溃.我想问一下perform方法中的重试次数,所以如果重试次数等于x,我可以简单地返回.

def perform(args)
  return if retry_count > 5
  ...
end
Run Code Online (Sandbox Code Playgroud)

使用Sidekiq 2.12.

编辑

我(不是OP)有同样的问题,但原因不同.如果正在重试该作业,我想进行额外的健全性检查以确保需要该作业,并且如果不再预期成功则退出重试,因为在排队之后外部发生了更改.

那么,有没有办法获得当前工作的重试次数?目前的答案只是建议你可以绕过需要的方式,或者可以从工作之外获得它.

ruby jobs sidekiq

11
推荐指数
3
解决办法
9616
查看次数

命名空间HTML 5本地存储密钥

我正在使用HTML 5本地存储API来存储用户的访问令牌.然后,请求会附加此令牌以访问我的服务器端API.我想知道我是否需要命名我使用的键.浏览器是否会处理此问题,还是需要将密钥称为"my-awesome-app-token"?我注意到Twitter为一些搜索参数做了这个.

顺便说一句,我知道将令牌存储在那里是不安全的,但安全性在这里并不重要,问题是关于命名空间键.

谢谢!

html5 namespaces key local-storage

10
推荐指数
2
解决办法
4417
查看次数

使用AASM状态机进行Rails错误处理

我正在使用rubyist-aasm状态机来处理我的Event对象中的不同状态(事件初始化,事件讨论,事件发布等).我添加了防护装置,以防止在某些条件得不到满足时改变状态.

这一切都很好但是当状态变化被警卫拒绝时它没有显示任何错误.知道如何才能看到状态并没有改变?我可以手动检查状态,但这听起来像一个丑陋的解决方案.

aasm_state :firststate 
aasm_state :secondstate  

aasm_event :approve do
  transitions :to => :secondstate, :from => [:firststate], :guard => :has_a_price? 
end

def has_a_price?   
  self.price.present?
end
Run Code Online (Sandbox Code Playgroud)

state ruby-on-rails state-machine aasm

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