1
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)
  1. 我的数据库中有 3 个表。反馈、用户、部门以一对多的关系连接。

  2. 通过运行上面的代码,我可以导航到下一个/上一个反馈。

  3. 我的用户(current_user)已登录,现在单击上一个/下一个,我想从 DB(上面写的条件)+其反馈.department_id = current_user.deparment_id 检索下一个反馈。

  4. 对于包含department_id 需要写一个AND 语句。怎么做 ?

4

3 回答 3

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
于 2013-09-10T05:21:23.420 回答
0

感谢您指出正确的逻辑。上述查询需要进行位修改才能正常工作。

  1. 简单的 id 没有链接到反馈表,因此必须使用 feedbacks.id
  2. & 需要替换为 AND。
  3. 更正的代码:

    Feedback.where("feedbacks.id < ? AND feedbacks.department_id = ?", current_feedback.id, current_user.department_id).order('created_at asc').last

谢啦 !:)

于 2013-09-10T06:03:47.127 回答
0

您还可以链接这两个条件,这样您就不需要使用 theAND并且您也可以重复使用该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
于 2013-09-10T06:41:19.817 回答