2015-10-06 104 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) 

你剛剛得到第一個一般。喜歡撥打電話:全部爲