我有一个用设计创建的用户模型:
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
其中profile
与user
相关联。我使用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 %>
根据我的知识和文档,这应该有效,但由于某种原因,它不会跟随用户或创建user
和profile
之间的关联。
答案 0 :(得分:0)
我想通了,在我从master分支安装的gemfile中,所以将你的gemfile更改为:
gem "acts_as_follower", github: "tcocca/acts_as_follower"