2015-08-05 4 views
1

Я пытаюсь добавить подобную кнопку на свой сайт с рельсами, поэтому я посмотрел на act_as_votable gem и систему Active Record Reputation System. Тем не менее, для обоих из них требуется модель пользователя (я думаю), и я хочу сделать подобную кнопку тем, что любой может щелкнуть, вошли ли они в систему или нет.Добавление кнопки Like, которая не требует модели пользователя

Есть ли способ сделать один из этих драгоценных камней таким же, или мне нужно создать систему голосования с нуля? Кроме того, если мне это нужно сделать с нуля, некоторые рекомендации по его приближению будут полезны. Спасибо

+0

Что именно нравятся людям? – thedanotto

+0

Модель под названием «Изображения» – Jill

ответ

1

Я бы создал еще одну модель под названием Like, а затем создал one to many association между Image и Like.

rails g resource Like image_id:integer 

затем обновить базу данных, запустив

rake db:migrate 

то вы хотите создать ассоциацию.

# like.rb 
class Like < ActiveRecord::Base 
    belongs_to :image 
end 

# image.rb 
class Image < ActiveRecord::Base 
    has_many :likes 
end 

Затем, когда кто-то нажимает на кнопку, как вы хотите создать new Like с id из Image

Я надеюсь, что это помогает.

3

Если вы хотите создать очень простую систему, в которой кто-то может повысить «изображение», вы можете поместить простой счетчик на каждое изображение.

Например, предположим, что вы используете базу данных SQL ароматизатора, который имеет таблицу с именем images прямо сейчас, сделать миграцию с change методом что-то вроде этого:

def change 
    add_column :images, :likes, :integer, default: 0 
end 

Затем в ImagesController или что-то вам «вновь призывая его, сделать действия, такие как

def upvote 
    image = Image.find(params[:id]) # in Rails 4, using strong params, this would look a bit different. 
    image.update_attributes(likes: image.likes + 1) 
    render json: image 
end 

Существует много я ухожу, но вы можете получить идею от этого, что upvoting без пользователей на самом деле очень просто. Это только усложняется, как только вы начинаете пытаться отслеживать, кому понравилось.