2015-10-06 107 views
1

first_or_create很奇怪。请看下面的方法:Rails:first_or_create无法正常工作

def self.store(session) 
    shop = self.first_or_create(shopify_domain: session.url, shopify_token: session.token) 

    binding.pry 

    shop.save! 
    shop.shopify_domain 
    end 

当我窥探到这个方法,我可以叫session.url得到domain2.myshopify.comsession.token得到22222

但是当我打电话店,我得到一个商店,shopify_domain: domain1.myshopify.comshopify_token: 11111

任何想法为什么会发生这种情况?这似乎很奇怪。

+0

您可以执行'shop = self.find_or_create_by(shopify_domain:session.url,shopify_token:session.token)'或遵循penner的回答。什么'first_or_create'的意思是:尝试从调用者作用域获取第一个元素(在你自己的情况下),如果返回nil,则从输入参数创建一个实例 – AOG

+1

在此失去30分钟。感谢这个问题,我也误解了语法。 – sandre89

回答

6
shop = self.where(shopify_domain: session.url, shopify_token: session.token).first_or_create(shopify_domain: session.url, shopify_token: session.token) 

你刚刚得到第一个一般。喜欢拨打电话:全部为