/ / Rails mode inštančná premenná nie je deklarovaná v modelovej triede - java, ruby-on-rails, ruby

Príklad modelovej premennej modelu Rails, ktorý nie je deklarovaný v triede modelu - java, rubín na koľajniciach, rubín

Práve som vytvoril model s nasledujúcim príkazom

rails generate model temp name:string description:string

otvoril som temp.rb ale neobsahuje žiadne vyhlásenia pre členov.

Som tiež zmätený spôsob, akým sú premenná inštanciepoužíva sa v ruby. Vidím veľa úryvkov kódu, kde v metódach používa iba premennú inštancie @instance_var. isn "t inštancia premennej deklarácie požadované v ruby ​​?, Týmto spôsobom Ak mám 15 metód a každý z nich nastaviť novú premennú inštancie potom nie je jediné miesto, kde všetky inštancie premennej možno nájsť ako my v jave, kde deklarujeme všetky premenné zvyčajne na začiatku triedy s rozsahom (súkromné, chránené, verejné atď.) Tu je príklad kódu

class Hello

def initialize
@instanceHello = "welcomeBack"
end

def printHello

print @instanceHello
end
end

odpovede:

1 pre odpoveď č. 1

Pre model to nie je "t class Hello; to by malo byť class Hello < ActiveRecord::Base, A tak zdedí veľa funkcií.

Členovia nie sú definovaní v modeli, ale sú definovaní v migrácii, ako ste to urobili rails generate model temp name:string description:string, Ak máte model pomenovaný temp, potom by mala byť pomenovaná tabuľka temps táto databáza by mala skutočne obsahovať všetkých týchto členov.

Druhá vec, o ktorú ste sa pýtalipremenných v Ruby. A áno, je pravda, že neexistuje miesto, kde sa nahromadia premenné inštancie; skôr sú rozptýlené v rôznych metódach, ku ktorým patria; a myslím si, že zvyšuje čitateľnosť.

Pokiaľ ide o váš príklad, môžete urobiť niečo ako:

class Hello
attr_accessor :instanceHello
def initialize
@instanceHello = "welcomeBack"
# self.instanceHello also works here
end

def printHello
p @instanceHello # print doesn"t work in Ruby. p or puts does the job.
# self.instanceHello also works here
end
end