相关疑难解决方法(0)

Rails find_or_create_by多个属性?

在活动记录中有一个名为find_or_create_by的方便动态属性:

Model.find_or_create_by_<attribute>(:<attribute> => "")

但是,如果我需要通过多个属性find_or_create呢?

假设我有一个模型来处理Group和Member之间的M:M关系,称为GroupMember.我可以有很多实例,其中member_id = 4,但我不想要多于一次的实例,其中member_id = 4和group_id = 7.我正在试图弄清楚是否可以这样做:

GroupMember.find_or_create(:member_id => 4, :group_id => 7)
Run Code Online (Sandbox Code Playgroud)

我意识到可能有更好的方法来处理这个问题,但我喜欢find_or_create这个想法的便利性.

activerecord many-to-many model ruby-on-rails dynamic-attributes

199
推荐指数
5
解决办法
10万
查看次数

如何在Rails 3中将多个属性传递给find_or_create_by?

我想使用find_or_create_by,但是这个语句不起作用.它不与其他属性"查找"或"创建".

productproperty = ProductProperty.find_or_create_by_product_id(:product_id => product.id, :property_id => property.id, :value => d[descname])
Run Code Online (Sandbox Code Playgroud)

似乎很少或没有关于在Rails 3中使用动态查找器的信息."和" - 这些一起给了我一个未知的方法错误.

更新:

最初我无法让以下工作.请假设我不是白痴,"产品"是产品AR模型的一个实例.

product.product_properties.find_or_create_by_property_id_and_value(:property_id => 1, :value => "X")
Run Code Online (Sandbox Code Playgroud)

错误方法是:

no such keys: property_id, value
Run Code Online (Sandbox Code Playgroud)

我无法理解这一点.只有今天早上我找到了传递这样的值的引用:

product.product_properties.find_or_create_by_property_id_and_value(1, "X")
Run Code Online (Sandbox Code Playgroud)

瞧,它运作正常.我原本希望哈希在相同的情况下工作,但我猜不是.

如果你错过互联网上的某些内容,我想你会得到一次投票?

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

42
推荐指数
5
解决办法
4万
查看次数