Ich möchte die Daten von der API speichern, aber nur einmal. Derzeit speichere ich Daten jedes Mal, wenn ich meine Seite neu lade, also habe ich denselben Eintrag viele Male ... Ich möchte nur neue speichern, wenn sie es sind. Wenn ich versuche, Validierung hinzufügen, dies zu vermeiden ich diesen Fehler:Daten von api speichern (aber nur einmal)
Validierung fehlgeschlagen: Das ist mein Code Datum bereits getroffen wurde, hat URL bereits
ergriffen:
Schema:
create_table "conferences", force: :cascade do |t|
t.string "title", null: false
t.string "url"
t.date "date", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
conference.rb:
class Conference < ActiveRecord::Base
validates_presence_of :title, :date
validates :date, :url, :uniqueness => true
def self.save_conference_from_api
response = ApiMeetup.new.events('parisrb')
api_data = JSON.parse(response.body)
parisrb = []
api_data.each do |event|
if event["name"] == "ParisRb.new(premier: :mardi, pour: :talks)"
parisrb << event
end
end
parisrb.map do |line|
conference = Conference.new
conference.title = line['name']
conference.date = line['time']
conference.url = line['link']
conference.save!
end
Conference.all
end
end
conferences_controller:
def index
@conferences = Conference.save_conference_from_api
end
Index:
%ul
- @conferences.each do |conf|
%li
%span
= conf.date
Ihre Validierungen funktionieren gut, was genau ist das Problem? Sie verhindern, dass die Datensätze erstellt und Ihnen mitgeteilt werden. – jamesc
Ja, die Validierung funktioniert, aber ich kann dann nicht auf die Website zugreifen. Also wie kann ich sagen "ok ist es so nichts zu tun und gehen Sie auf die nächste, dann zeigen Sie die Seite" – Orsay