我需要确保在创建产品时它至少有一个类别.我可以使用自定义验证类来完成此操作,但我希望有一种更标准的方法.
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) 我正在处理大量遗留数据,偶尔datetime字段为nil/null.这打破了本地化.有没有一种推荐的方法来解决这个问题:
dt = nil
l(dt) unless dt.nil?
Run Code Online (Sandbox Code Playgroud) 我的github上的项目已经输入了很多问题.一些爱因斯坦运行了一个脚本并通过api创建了所有这些荒谬的问题.没有任何东西与这些问题有关.
当然有一些我可以删除它们,但我似乎无法在文档中找到它.
我正试图用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) 我正在使用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) 这很容易解决,但如果它被包装在全局ajax设置中会很好
当我运行ajax调用时,我想知道哪个元素/事件触发了beforeSend选项中的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) 对于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) 是否可以从ruby脚本或rails控制台中呈现部分?
怎么会这样做呢?
我正在尝试连接到我的主机上的数据库(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) rspec ×3
ruby ×2
sql-server ×2
ajax ×1
freetds ×1
github ×1
github-api ×1
isql ×1
jquery ×1
linux ×1
routes ×1
ssms ×1
ssms-2014 ×1
validation ×1