小编rec*_*nym的帖子

验证对象是否具有一个或多个关联对象

我需要确保在创建产品时它至少有一个类别.我可以使用自定义验证类来完成此操作,但我希望有一种更标准的方法.

class Product < ActiveRecord::Base
  has_many :product_categories
  has_many :categories, :through => :product_categories #must have at least 1
end

class Category < ActiveRecord::Base
  has_many :product_categories
  has_many :products, :through => :product_categories
end

class ProductCategory < ActiveRecord::Base
  belongs_to :product
  belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)

validation ruby-on-rails has-many-through

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

rails i18n - 如何处理nil日期传递的情况,即l(nil)

我正在处理大量遗留数据,偶尔datetime字段为nil/null.这打破了本地化.有没有一种推荐的方法来解决这个问题:

dt = nil
l(dt) unless dt.nil?
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

15
推荐指数
3
解决办法
4343
查看次数

Github - 删除错误输入的问题

我的github上的项目已经输入了很多问题.一些爱因斯坦运行了一个脚本并通过api创建了所有这些荒谬的问题.没有任何东西与这些问题有关.

当然有一些我可以删除它们,但我似乎无法在文档中找到它.

github github-api

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

使用rspec测试嵌套路由

我正试图用rspec测试路线.以下给出了"预期块返回真值"的错误.

我不确定我错过了什么.通过浏览器,我可以发布到这个网址,它是成功的.

有任何想法吗?谢谢!

路线

resources :forum_topics do
  resources :forum_sub_topics
end
Run Code Online (Sandbox Code Playgroud)

测试:

it "recognizes and generates nested #create" do
  { :post => "/forum_topics/1/forum_sub_topics" }.should route_to(:controller => "forum_sub_topics", :action => "create", :forum_topic_id => 1)
end
Run Code Online (Sandbox Code Playgroud)

rspec routes ruby-on-rails

13
推荐指数
2
解决办法
2551
查看次数

SSMS片段和快捷方式

我正在使用SSMS 2014.我能够插入一个片段,但它们似乎没有响应快捷方式(即crproc [tab])

这个功能是否有效?

<?xml version="1.0" encoding="utf-8" ?>
 <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
 <CodeSnippet Format="1.0.0">
 <Header>
 <Title>prod1</Title>
 <Description>testing</Description>
 <Author> dale </Author>
 <SnippetTypes>
 <SnippetType>Expansion</SnippetType>
 </SnippetTypes>
 <Shortcut>crproc</Shortcut>
 </Header>
 <Snippet>
 <Declarations>
 <Literal>
 <ID>DatabaseName</ID>
 <ToolTip>Name of database.</ToolTip>
 <Default>DB</Default>
 </Literal>
 </Declarations>
 <Code Language="SQL">
 <![CDATA[
 ------------------------------------------------------
 -- FILENAME: Template-Expansion.snippet
 -- PURPOSE: Template for Expansion (Insert) snippets.
 -- AUTHOR: Ken O. Bonn
 -- DATE: May 15, 2013
 ------------------------------------------------------
 SET NOCOUNT ON;

 EXEC SP_HELPDB $DatabaseName$;

 ]]>
 </Code>
 </Snippet>
 </CodeSnippet>
 </CodeSnippets>
Run Code Online (Sandbox Code Playgroud)

sql-server ssms ssms-2014

12
推荐指数
2
解决办法
5124
查看次数

jquery ajax - 全局设置.是否可以知道哪个事件/元素触发了ajax调用?

这很容易解决,但如果它被包装在全局ajax设置中会很好

当我运行ajax调用时,我想知道哪个元素/事件触发了beforeSend选项中的ajax调用.

这样做有简洁的方法吗?

ajax jquery

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

rspec测试ajax响应(应呈现部分)

我想测试我的控制器动作是否呈现局部.

我四处乱逛,似乎找不到任何可行的东西.

创造行动:

def create
  @project = Project.new...
  respond_to do |format|
    if @project.save
      format.js { render :partial => "projects/form" }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

规格:

it "should save and render partial" do
  ....
  #I expected/hoped this would work
  response.should render_partial("projects/form")
  #or even hopefully
  response.should render_template("projects/form")
  #no dice
end
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails

8
推荐指数
2
解决办法
9653
查看次数

这里发生了什么:rspec stub(:new).with ...?

对于rspec生成的脚手架控制器规格发生了什么,我有点困惑.在我向我的应用程序添加授权之前,它似乎有意义,现在我需要更新我的测试.

MyClass.stub(:new).with('these' => 'params') { mock_my_class(:save => true) }
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我在创建新记录时将哈希合并到params中(它需要current_user id有效).MyClass.new(params [:my_class] .merge(:user_id => current_user.id))

测试失败

expected: ({"these"=>"params"})
got: ({"these"=>"params", "user_id"=>315})
Run Code Online (Sandbox Code Playgroud)

测试失败是有道理的,因为新方法接收到它没有预料到的参数.它预计会收到{'these'=>'params'}但它实际收到{'these'=>'params','user_id'=> 1234}

所以我的自然反应是调整测试,因为新方法应该接收{'these'=>'params','user_id'=> 1234}并返回模拟对象.

所以我添加测试如下:

   MyClass.stub(:new).with({'these' => 'params', 'user_id' => @user.id}) { mock_my_class(:save => true) }   
Run Code Online (Sandbox Code Playgroud)

这是我通过循环抛出的地方.测试结果如下:

expected: ({"these"=>"params", "user_id"=>298})
got: ({"these"=>"params"})
Run Code Online (Sandbox Code Playgroud)

好像一次成功的测试似乎神奇地躲避了我.我确信这些结果有合理的原因,但我似乎无法弄明白.

有帮助吗?:)

注意:

rspec网站说如下:

Account.should_receive(:find).with("37").and_return(account)
Run Code Online (Sandbox Code Playgroud)

要么

Account.stub!(:find).and_return(account)
Run Code Online (Sandbox Code Playgroud)

这很容易跟随它只是奇怪的是脚手架生成的不包含这些方法(除非我拙劣的东西可能(:)


通行证

login_admin
describe "with valid params" do
  it "assigns a newly created forum_sub_topic as @forum_sub_topic" do
    ForumSubTopic.stub(:new) { mock_forum_sub_topic(:save => true) }
    ForumSubTopic.should_receive(:new).with({"these"=>"params", "user_id"=> @admin.id})  #PASS!
    post …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails

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

从ruby脚本或控制台渲染部分内容

是否可以从ruby脚本或rails控制台中呈现部分?

怎么会这样做呢?

ruby-on-rails ruby-on-rails-3

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

FreeTDS - tsql连接,isql失败

我正在尝试连接到我的主机上的数据库(windows xp,sql server 05).我的客户机是Ubuntu 10.04.我可以使用tsql连接和执行命令,但是isql失败.以下是我的配置文件和错误消息.

freetds.conf

text size = 64512

[SQLEXPRESS]
host = 192.168.163.1
port = 1433
tds version = 7.0
Run Code Online (Sandbox Code Playgroud)

ODBCINST.INI

[FreeTDS]
Description     = TDS driver (Sybase/MS SQL)
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
CPTimeout       =
CPReuse         =
FileUsage       = 1
Run Code Online (Sandbox Code Playgroud)

ODBC.INI

[SQLEXPRESS]
Driver          = FreeTDS
Description     = ODBC connection via FreeTDS
Trace           = No
Servername  = 192.168.163.1
Database        = SCOPE_Peel
Port        = 1433
UID         = sa
PWD         = test1234
ReadOnly    = No
Run Code Online (Sandbox Code Playgroud)

TSQL:

tsql -S SQLEXPRESS  -U sa …
Run Code Online (Sandbox Code Playgroud)

ruby linux sql-server freetds isql

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