2016-02-09 4 views
1

Я застрял здесь ... У меня есть разные модели в моем приложении с большим количеством отношений, и теперь я хочу отображать только записи, созданные после регистрации пользователя вне. Для этого у меня есть t.datetime «last_active_at» в моей модели пользователей, которые попадают на каждый выход из системы. Это прекрасно работает.Показать записи, созданные после последнего выхода пользователя

У меня есть проекты и пользователи, пользователям могут быть назначены проекты. Проекты имеют документы. Я показываю Пользователю только документы проектов, которым он назначен. Это работает.

Теперь я хотел бы показать только документы, созданные после того, как пользователь вышел из системы в последний раз.

То, что я хотел бы сделать, - сравнить метку времени created_at ProjectDocument с меткой времени last_active_at текущего_user.

user.rb (пользователи) сам

has_many :us_prs 

project_document.rb (есть документы и проекты, как ссылки)

belongs_to :project 

project.rb (сами проекты)

has_many :project_documents 
    has_many :us_prs 
    has_many :users, through: :us_prs 

us_pr.rb (назначает пользователей (ссылки) на проекты (ссылки))

belongs_to :user 
    belongs_to :project 

у меня в контроллере:

@mynewprojectdocuments = [] 
     (UsPr.where(user_id: [current_user.id])).each do |mynewprojectdocuments| 
     (ProjectDocument.where(project_id: [mynewprojectdocuments.project_id])).each do |pr| 
      @mynewprojectdocuments << pr 
     end  
    end 

мой взгляд:

<% @mynewprojectdocuments.each do |mynewprojectdocuments| %> 
... 
<% end %> 

Я нашел несколько постов здесь, которые, кажется, чтобы ответить на подобные вопросы, но я просто не получить его Работа.

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

Я ценю вашу помощь в этом!

Спасибо :)

+0

Можете ли вы изменить свой вопрос с моделями и ассоциациями, пожалуйста, ? – Pavan

+0

Возможно, вам стоит подумать, что пользователи почти никогда не выходят из строя. :) – Tim

+0

Я полностью понимаю, почему;) сайт очень помог.Всегда :) – Daniel

ответ

0

То, что вы хотите сделать, это выбрать все проектные документы, где идентификатор проекта в проектном документе находится в пределах идентификаторов проекта пользователя, и создаются по истечении определенного времени?

Одним из удобных полей по умолчанию для всех моделей является, как правило, created_at; другой - updated_at. Они заполняются автоматически.

Запрос вернуть то, что вы ищете может быть что-то вроде этого:

ProjectDocument.where(project_id: user.projects).where("created_at > ?", User.last_active_at) 

Это предполагает две вещи:

ProjectDocument.belongs_to Project 
User.has_many Project 
+0

Спасибо за ответы, ничего себе, я впечатлен тем, как быстро реагируют люди! Большое спасибо! – Daniel

+0

hm, это работает на нем, но я не могу понять, как добавить его в контроллер, который я разместил в вопросе. – Daniel

+0

@ Daniel '@documents = Projects.where (...)', то вы можете ссылаться на '@ documents' в своих представлениях. –

Смежные вопросы