def self.get_previous_feedback current_feedback
Feedback.where("feedbacks.id < ?", current_feedback.id).order('created_at asc').last
end
def self.get_next_feedback current_feedback
Feedback.where("feedbacks.id > ?", current_feedback.id).order('created_at asc').first
end
#current_feeedback is the show page of any feedback.( feedback/show/id=2)
我的数据库中有3个表。反馈,用户,部门以一对多关系连接。
通过运行以上代码,我可以导航到下一个/上一个反馈。
我的用户(current_user)已登录,现在点击上一个/下一个,我想从DB(上面写的条件)+的feedback.department_id = current_user.deparment_id中检索下一个反馈。
包含需要编写AND语句的department_id。怎么做?
答案 0 :(得分:0)
试试这个......
def self.get_previous_feedback(current_feedback,current_user)
Feedback.where("id < ? & department_id = ?", current_feedback.id, current_user.department_id).order('created_at asc').last
end
def self.get_next_feedback(current_feedback,current_user)
Feedback.where("id > ? & department_id = ?", current_feedback.id, current_user.department_id).order('created_at asc').first
end
答案 1 :(得分:0)
感谢您指出正确的逻辑。 以上查询需要进行位修改才能正常工作。
更正代码:
Feedback.where(“feedbacks.id&lt;?AND feedbacks.department_id =?”, current_feedback.id,current_user.department_id).order('created_at ASC')。最后
谢谢你! :)
答案 2 :(得分:0)
您也可以链接这两个条件,这样您就不需要使用AND
,也可以重复使用department_id
子句。
def self.get_department_feedback current_user
Feedback.where(department_id: current_user.deparment_id)
end
def self.get_previous_feedback(current_feedback,current_user)
get_deparment_feedback(current_user).where("feedbacks.id < ?", current_feedback.id).order('created_at asc').last
end
def self.get_next_feedback(current_feedback,current_user)
get_deparment_feedback(current_user).where("feedbacks.id > ?", current_feedback.id).order('created_at asc').first
end