Итак, у меня есть блог, который я пытаюсь использовать для постов. Я разработал и создал все ассоциации между моделями, голосованиями, пользователями и home_blogs.
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :liked_home_blogs, through: :votings
end
class HomeBlog < ApplicationRecord
mount_uploader :image, ImageUploader
has_many :hashtaggings
has_many :hashtags, through: :hashtaggings
has_many :votings
has_many :votants, through: :votings
def all_hashes=(names)
self.hashtags = names.split(",").map do |name|
Hashtag.where(name: name.strip).first_or_create!
end
end
def all_hashes
self.hashtags.map(&:name).join(", ")
end
end
class Voting < ApplicationRecord
belongs_to :home_blog
belongs_to :user
end
и контроллер выглядит следующим образом:
class VotingsController < ApplicationController
before_action :authenticate_user!
def upvote
@votings = HomeBlog.find(params[:home_blog_id])
@votings.votings.build( :upvote => true, :downvote => false,
:user_id => current_user.id)
@votings.save!
redirect_to request.referrer, notice: "Thanks for the
vote!"
end
def downvote
@voting = HomeBlog.find(params[:home_blog_id])
@voting.votings.build( :downvote => true, :upvote =>
false, :user_id => current_user.id)
@voting.save!
redirect_to request.referrer, notice: "Thanks for the
vote!"
end
private
def voting_params
params.require(:voting).permit(:upvote, :downvote,
:home_blog_id, :user_id)
end
end
Извините за дрянное копирование и вставку для контроллера. У меня вопрос, как я могу сделать условие для current_user в разработке, чтобы ограничить их одним голосом за сообщение home_blog? Спасибо!