2016-04-05 10 views
0

私のモデル(ForumsTopic)に条件を追加したいのですが、私は現在のユーザ値が必要です。 has_oneの「とライン上のRails 4 current_user(gem devise)モデルへのアクセス

class ForumsTopic < ActiveRecord::Base 
belongs_to :forum 
belongs_to :user 
has_one :topic_track, ->(user){where(user_id: current_user.id)}, :class_name=> 'ForumsTrack' 
has_many :forums_messages 

:ここ

は私ForumsTopic.rbだtopic_track [...]私はどのように私ができる、

のuser_id = current_user.idで一つの条件を持っている。しかし。それを作る?

答えて

1

私はForumsTrackモデルで、そのためにスコープを使用すると思います。

class ForumsTopic < ActiveRecord::Base 
    has_one :topic_track, :class_name=> 'ForumsTrack' 
end 

class ForumsTrack < ActiveRecord::Base 
    scope :for_user, -> (user) { where(user: user) } 
end 

それから、利用可能な場所(controller、service_modelなど)からcurrent_userを渡します。

+0

ありがとうございます!あなたのコードでは、あなたのコードにはちょうどエラーがあります: 'scope:for_user、 - >(user){where(user:user)} '(arrow before"(user) ") – Shinix

+0

Woops、Thanks!私はそれを編集します。 – born4new