Ich versuche zu verwenden, wo Abfrage mit Beziehungen und update_at vergleichen.Ruby on Rails, wo Abfrage mit Beziehungen und update_at vergleichen
Wenn ich diese Abfrage mit updated_at params sende, möchte ich nur die neuesten Gründe abrufen, die durch updated_at date gefiltert wurden, aber es filtert mit Projekt updated_at, nicht nach Gründen update_at.
Wie kann ich das beheben, um Gründe Daten mit update_at Filter zu erhalten?
@Getting Gründe mit updated_at Filter
https://server.com/api/v1/entries?updated_at=2016-05-02T01:12:57.204Z
@Model
User
has_many :projects
has_many :reasons, through: :projects
Project
belongs_to :user
has_many :reasons
Reasons
belongs_to :project
@Reasons Controller
# GET /reasons
def index
reasons = current_user.reasons
updated_at = params[:updated_at]
# Filter with updated_at for reloading from mobile app
if updated_at.present?
# This is my first try, but it shows error because of relations
# reasons = reasons.where("updated_at > ?", DateTime.parse(updated_at))
# This shows reasons data, but it only compares updated_at in Project data, not reasons data...
reasons = reasons.joins(:project).where("projects.updated_at > ?", DateTime.parse(updated_at))
# Get all non deleted objects when logging in from mobile app
else
reasons = reasons.where(deleted: false)
end
render json: reasons
end
Vielleicht habe ich Ihren Beitrag nicht verstanden, aber warum versuchen Sie nicht als nächstes: 'Gründe.Funktionen (: Projekt) .where (" Gründe.aktualisiert_at>? ", DateTime.parse (aktualisiert_at))'? – kunashir
'Gründe = Gründe.joins (: Projekt) .where (" projects.updated_at>? AND Gründe.aktualisiert_at>? ", DateTime.parse (updated_at))' - versuchen Sie dies als Where-Klausel sollte Bedingung mit 'updated_at überprüfen 'Attribute der Tabelle 'Projekte' und 'Gründe'. – dp7
Das war es! Danke für euch beide. –