活动的列表里面需要获取当前用户的是否喜欢了某一条活动,我不知道 rails 该怎么写这个 sql,有没有大神给个思路,或者给个链接什么。rails 新手求帮助
是要先执行 分页活动列表搜索,然后再进行当前用户喜欢的判断吗?
现在有两个想法 想法一:搜索活动列表,然后使用活动 ids 和 user_id 搜索出当前用户的喜欢的 活动 id,然后组合数据。搜索我还会点,组合完全没有头绪啊。 想法二:搜索活动列表,然后在 model 层建立一个喜欢的字段 在 get 方法里面来做搜索,这个我觉得是比较简洁的,但是不知道这样好不好。也不太知道 怎么写。
我试了下想法二 添加 attr_accessor,rails c 输出正常,但是 json 化的数据是没有该字段的。不知道为什么
attr_accessor :current_user_like_state
def current_user_like_state
#这里来做sql 喜欢的判断
end
def current_user_like_state=(like_state)
self.current_user_like_state = 1
end
我觉得第一个思路需要组合数据,有点麻烦,所以我实现了第二个想法。
class Online < ActiveRecord::Base
attr_accessor :is_like
def is_like
sql = "type = 1 AND state = 1 AND object_id = #{self.id} AND user_id = #{self.user_id}"
like = Like.where( sql )
if like.count == 0
self.is_like = 0
else
self.is_like = 1
end
end
def as_json(options)
super(:only => [:id, :user_id, :title, :description, :cover_url, :user, :current_user_like_state, :relation_url], :methods => :is_like )
end
model 添加了两个方法 实现了该功能。做的不好,欢迎各位提供的新思路。感谢楼下各位的回答。谢谢你们。