make_voteable icon indicating copy to clipboard operation
make_voteable copied to clipboard

up_voted? does not work for STI instances.

Open tomoyuki28jp opened this issue 13 years ago • 1 comments

class Post < ActiveRecord::Base attr_accessible :type end

class Link < Post end

irb(main):012:0> User.first.up_vote! Link.first INSERT INTO votings (created_at, up_vote, updated_at, voteable_id, voteable_type, voter_id, voter_type) VALUES ('2012-10-14 07:15:41', 1, '2012-10-14 07:15:41', 62, 'Post', 1, 'User')

irb(main):013:0> User.first.up_voted? Link.first MakeVoteable::Voting Load (0.3ms) SELECT votings.* FROM votings WHERE votings.voteable_type = 'Link' AND votings.voteable_id = 62 AND votings.voter_type = 'User' AND votings.voter_id = 1 LIMIT 1 => false

tomoyuki28jp avatar Oct 14 '12 07:10 tomoyuki28jp

Following code fixes the problem. You can simply add this to your voter model. (In my case, it's app/modes/User.rb)

def fetch_voting(voteable) MakeVoteable::Voting.where( :voteable_type => voteable.class.base_class.to_s, :voteable_id => voteable.id, :voter_type => self.class.to_s, :voter_id => self.id).try(:first) end

tomoyuki28jp avatar Oct 14 '12 08:10 tomoyuki28jp