我想使用find_或create_by,但此语句无效。它不使用其他属性“查找”或“创建”
productproperty=productproperty。通过产品id(:product\u id=>;product.id,:property\u id=>;property.id,:value=>;d[descname])查找或创建
关于Rails3中使用动态查找器的信息似乎很少,甚至没有。“和”-将这些结合在一起会给我一个未知的方法错误
更新:
最初,我无法使以下各项正常工作。请假设我不是白痴,“产品”是产品AR模型的一个实例
产品。产品属性。通过属性id和值(:属性id=>;1,:值=>;“X”)查找或创建
错误方法为:
没有这样的键:属性id、值
我想不出来。直到今天早上,我才找到这样传递值的引用:
产品。产品属性。通过属性、id和值(1,“X”)查找或创建
瞧,它工作得很好。我本以为哈希在同样的情况下也会起作用,但我想不会
所以我想如果你错过了互联网上的一些东西,你会投反对票吗
如果要按多个属性进行搜索,可以使用“和”来附加属性。例如:
productproperty=productproperty。通过产品id、属性id和值(:product\u id=>;product.id,:property\u id=>;property.id,:value=>;d[descname])查找或创建
有一个小问题需要注意。它将始终返回您指定的对象,即使该对象由于验证错误而无法保存。因此,请确保检查返回的对象是否具有id(或者是否有效?)。不要假设它在数据库中
或者,如果无法保存对象,可以使用“bang”版本的方法引发错误:
http://guides.rubyonrails.org/active_record_querying.html#find-或者用砰的一声创造
这适用于Rails 3