Ich muss einen Wert übergeben, um in einem Modell von einem anderen Controller ohne direkte Beziehung zwischen ihnen zuzuordnen. Im folgenden Beispiel muss ich farming_year im Field Model vom Planting Controller aktualisieren.RoR: Update-Attribut in einem Modell von einem nicht verwandten Controller
The Field Modell:
class Field < ApplicationRecord
has_many :crops
attr_accessor :farming_year
def getting_crops
@crops_list = Crop.select('crops.name').where(field_id: self.id, year: self.get_farming_year) # doesn't get the farming_year
end
def get_farming_year
@farming_year # passing the value directly will work @farming_year=2015!!
end
def farming_year=(val)
@farming_year = val # passing the value directly won't work @farming_year=2015!!
end
end
Im Pflanz Controller:
def new
@field = Field.new
@field.farming_year = session[:working_year]
@field.save
flash.now[:success] = @field.get_farming_year # it works and gives the correct year
end
, wenn ich die @farming_year im get_farming_year Methode @ farming_year = 2016 geändert wird, dann wird der Code arbeiten und Geben Sie die korrekten Crops-Datensätze ein. Die Flash-Nachricht im obigen Code ohne Änderung gibt das richtige Jahr aus dem Modell. Ich denke, mein Hauptproblem besteht darin, das Landwirtschaftsjahr von der get_farming_year-Methode zur getting_crops-Methode zu leiten.
Hinweis: das Rahmenjahr gehört zum Feld Crop nicht zum Feld, also muss ich es nicht zur Feldtabelle hinzufügen.
Irgendwelche Ideen, wie man das erreicht?
Rails/Ruby-Versionen? – ArtOfCode
speichern Sie das Feld? '@ field.save' –
Ich benutze Schienen 5 – Yousef