acts_as_follower与以下用户有关

时间:2017-01-03 22:13:59

标签: ruby-on-rails ruby ruby-on-rails-4 acts-as-follower

我有一个用设计创建的用户模型:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_one :profile, dependent: :destroy
  after_create :build_profile

  acts_as_follower

end

其中profileuser相关联。我使用acts_as_follower gem为这个模型提供了跟随另一个模型的能力。

我希望User关注Profile,因此我的个人资料模型设置如下:

class Profile < ApplicationRecord
  belongs_to :user

  has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "https://s-media-cache-ak0.pinimg.com/564x/f7/61/b3/f761b3ae57801975e0a605e805626279.jpg"
  validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\z/

  acts_as_followable

end

配置文件模型应该根据gem进行,这就是我设置的方式。

我根据需要运行了迁移rails generate acts_as_follower

在我的profile_controller iv中设置以下方法:

  def follow
    @profile = Profile.find(params[:id])
    current_user.follow(@profile)
    redirect_to :back
  end

  def unfollow
    @profile = Profile.find(params[:id]) 
    current_user.stop_following(@profile)
    redirect_to :back
  end

在我的route.rb文件中,我有以下内容:

  resources :profiles do
    member do
      get :follow
      get :unfollow
    end
  end

现在在我的个人资料中显示视图iv设置按钮如下:

  <% if !@profile.followed_by?(current_user) %>
    <%= link_to "Follow", follow_profile_path(@profile), class: "btn btn-success btn-outline btn-sm"%>
  <% end %>

根据我的知识和文档,这应该有效,但由于某种原因,它不会跟随用户或创建userprofile之间的关联。

1 个答案:

答案 0 :(得分:0)

我想通了,在我从master分支安装的gemfile中,所以将你的gemfile更改为:

gem "acts_as_follower", github: "tcocca/acts_as_follower"