2014-09-30 57 views
0

我試圖抓住我的用戶模型中與授權模型相關的變量。以下在Rails控制檯中工作,但不知道如何將其轉換爲user.rb模型,因爲它不斷給我錯誤,它必須是符號或字符串。做to_s是不正確的結果。從Rails中的模型到模型關係獲取某些變量

class User < ActiveRecord::Base 

    has_many :authorizations 

    def social 
     user = User.current 
     token = user.authorizations.pluck(:token).to_s 
    end 

end 

我的授權模式也是這樣;

class Authorization < ActiveRecord::Base 

    belongs_to :user 

end 

我試着做

class User < ActiveRecord::Base 

    def social 
     user = User.current 
     token = user.authorizations.select(:token).to_s 
    end 

end 

在控制檯的作品這樣做以下,但不是當我在做user.authorizations

auth = Authorization.where(:user_id => '54').token 

但一切都因爲不正確,要麼有括號或\斜線內。

+0

是否定義了'的has_many:authorizations'在用戶模式? – AnkitG 2014-09-30 17:22:49

+0

是的..也在我的控制檯做'用戶= User.find('58')'58是用戶ID,然後做'user.authorizations'將帶來正確的記錄。然後我想我也可以做'user.authorizations.token',但是我得到錯誤'未定義的方法「令牌」#'但是令牌在授權和'user.authorizations'中顯示包括令牌在內的所有列。 – user2419316 2014-09-30 17:26:39

+0

你可以嘗試'user.authorizations.collect(&:token)'? – AnkitG 2014-09-30 17:29:25

回答

1

如果它返回的user.authorizations然後做一個

user.authorizations.collect(&:token).first.to_s 

拔毛是在分貝水平。它只會查詢特定的字段。

+0

必須是符號或字符串... – user2419316 2014-09-30 17:44:17

+0

再次感謝! :) – user2419316 2014-09-30 17:44:42

+0

@ user2419316,歡迎光臨! – AnkitG 2014-09-30 17:45:15

0

你接近有:

token = user.authorizations.pluck(:token).to_s 

與有相似@ AnkitG的答案對齊將需要

token = user.authorizations.pluck(:token).first.to_s 

如果你要始終如一地有可能要改變單一的授權關係從

has_many :authorizations 

has_one :authorization 

這種方式,您可以:

user.authorization.token