Wie kann ich die Daten in der Großeltern Association abrufen.Rails: Wie legt man den Großvater-Wert (Assoziation) in ActiveRecord fest
Geben Sie die folgenden Modelle:
class Schedule < ActiveRecord::Base
belongs_to :user
has_many :rooms
accepts_nested_attributes_for :rooms, allow_destroy: true
...
class Room < ActiveRecord::Base
belongs_to :schedule
has_many :events
accepts_nested_attributes_for :events, allow_destroy: true
...
class Event < ActiveRecord::Base
belongs_to :room
...
I schedule.departure_date
in event.rb before_save
für die Verwendung von Callback bekommen möchten.
event.rb
class Event < ActiveRecord::Base
belongs_to :room
before_save :assign_date
private
def assign_date
self.from = DateTime.new(schedule.departure_date.year, schedule.departure_date.month, schedule.departure_date.day, from.hour, from.min)
end
schema.rb
create_table "schedules", force: :cascade do |t|
t.date "departure_date"
...
create_table "rooms", force: :cascade do |t|
t.integer "schedule_id"
...
create_table "events", force: :cascade do |t|
t.time "from"
t.integer "room_id"
...
Wenn ich versuche, diesen Code auszuführen, erscheint die folgende Fehlermeldung.
development.log
NameError (undefined local variable or method `schedule' for #<Event:0x000000058bdd28>):
app/models/event.rb:15:in `assign_date'
app/controllers/schedules_controller.rb:51:in `update'
schedules_controller.erb
def update
@schedule.room.maximum(:day)
if @schedule.update(schedule_params)
flash[:success] = "Schedule updated!"
redirect_to root_url
else
render 'edit'
end
end
...
private
def schedule_params
params.require(:schedule).permit(:title, :departure_date, rooms_attributes: [:id, :_destroy, :room, :day, events_attributes: [:id, :_destroy, :from, :to, :title, :detail]])
end
I simple_nested_form_for
und simple_fields_for
meiner Meinung nach verwenden.
Es wäre zu schätzen, wenn Sie mir geben könnten, wie man schedule.departure_date
in event.rb
bekommt.
Ich denke, es ist ein Tippfehler Sie Schedule statt Zeitplan für Ihre Antwort –