我正在尝试找到在Rails中为对象设置默认值的最佳方法.
我能想到的最好的new
方法是在控制器中设置方法的默认值.
如果可以接受或者有更好的方法,是否有人有任何意见?
Ruby允许你这样做
[5,5,5].sum
=> 15
Run Code Online (Sandbox Code Playgroud)
有没有什么可以在数组上做布尔算术
[true, true, true].sum
=> true
[true, false, true].sum
=> false
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的课:
class Foo < ActiveRecrod::Base
has_many :bars
def nasty_bars_present?
bars.where(bar_type: "Nasty").any?
end
validate :validate_nasty_bars
def validate_nasty_bars
if nasty_bars_present?
errors.add(:base, :nasty_bars_present)
end
end
end
Run Code Online (Sandbox Code Playgroud)
在测试#nasty_bars_present?我的方法就是写一个rspec测试来存根吧关联但允许自然执行的地方.就像是:
describe "#nasty_bars_present?" do
context "with nasty bars" do
before { foo.stub(:bars).and_return([mock(Bar, bar_type: "Nasty")]) }
it "should return true" do
expect(foo.nasty_bars_present?).to be_true
end
end
end
Run Code Online (Sandbox Code Playgroud)
上面的测试给出了关于没有数组方法的错误.如何包装模拟以便在哪里执行适当的?
谢谢!
鉴于以下表达的关系:
class Parent < ActiveRecord::Base
has_many :children, :dependent => :destroy
accepts_nested_attributes_for :child
end
class Child < ActiveRecord::Base
belongs_to :parent
validates :name, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
假设我们有一个包含多个子节点的父对象,其中一个或多个具有导致parent.valid的错误?返回false.
parent = Parent.new
parent.build_child(:name => "steve")
parent.build_child()
parent.valid?
Run Code Online (Sandbox Code Playgroud)
有没有办法在查看parent.errors对象时访问导致错误的子元素?
我有几个html元素,我附加哈希就像这样:
<p class='message' data-dependencies={'#first':{'equal':'Yes'}}>
Relevant Content
</p>
Run Code Online (Sandbox Code Playgroud)
以便
$(".message").first().data("dependencies")
Run Code Online (Sandbox Code Playgroud)
回报
{'#first':{'equal':'Yes'}}
Run Code Online (Sandbox Code Playgroud)
但正如一位好友刚刚向我指出的那样,这个值就是一个字符串.所以下面描述的过滤器很自然地用它很难.
过滤器的目标是能够获取具有指定键的元素,在本例中为"#first".
$el.children().find("*").filter(function(){
var dependency_hash = $(this).data("dependencies");
if(dependency_hash != undefined && "#first" in dependency_hash){
return true
}
});
Run Code Online (Sandbox Code Playgroud)
有没有办法访问通过数据对象传递的哈希值,还是有另一种方法可以构建数据,以便实现能够根据键选择元素的相同方法?
我不知何故在过去的某个时刻设法在我的主分支中获得了一些实验性功能,这些功能已被推广到原点.我的本地主分支没有实验性功能,所以我要强制推出它.我不想失去实验性的变化,所以有没有办法在我强制将我的本地主人推送到原点之前我可以将origin/master(或复制它)移动到新的分支?